mirror of
https://github.com/denoland/deno.git
synced 2024-11-29 16:30:56 -05:00
Add support for multiple files in fetch command (#3845)
This commit is contained in:
parent
1dc8afe3af
commit
2cd3994902
6 changed files with 53 additions and 4 deletions
25
cli/flags.rs
25
cli/flags.rs
|
@ -401,9 +401,11 @@ fn fetch_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
|
||||||
importmap_arg_parse(flags, matches);
|
importmap_arg_parse(flags, matches);
|
||||||
config_arg_parse(flags, matches);
|
config_arg_parse(flags, matches);
|
||||||
no_remote_arg_parse(flags, matches);
|
no_remote_arg_parse(flags, matches);
|
||||||
if let Some(file) = matches.value_of("file") {
|
if let Some(files) = matches.values_of("file") {
|
||||||
|
for file in files {
|
||||||
flags.argv.push(file.into());
|
flags.argv.push(file.into());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lock_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
|
fn lock_args_parse(flags: &mut DenoFlags, matches: &clap::ArgMatches) {
|
||||||
|
@ -669,7 +671,12 @@ fn fetch_subcommand<'a, 'b>() -> App<'a, 'b> {
|
||||||
.arg(importmap_arg())
|
.arg(importmap_arg())
|
||||||
.arg(config_arg())
|
.arg(config_arg())
|
||||||
.arg(no_remote_arg())
|
.arg(no_remote_arg())
|
||||||
.arg(Arg::with_name("file").takes_value(true).required(true))
|
.arg(
|
||||||
|
Arg::with_name("file")
|
||||||
|
.takes_value(true)
|
||||||
|
.required(true)
|
||||||
|
.min_values(1),
|
||||||
|
)
|
||||||
.about("Fetch the dependencies")
|
.about("Fetch the dependencies")
|
||||||
.long_about(
|
.long_about(
|
||||||
"Fetch and compile remote dependencies recursively.
|
"Fetch and compile remote dependencies recursively.
|
||||||
|
@ -1683,6 +1690,20 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn fetch_multiple() {
|
||||||
|
let r =
|
||||||
|
flags_from_vec_safe(svec!["deno", "fetch", "script.ts", "script_two.ts"]);
|
||||||
|
assert_eq!(
|
||||||
|
r.unwrap(),
|
||||||
|
DenoFlags {
|
||||||
|
subcommand: DenoSubcommand::Fetch,
|
||||||
|
argv: svec!["deno", "script.ts", "script_two.ts"],
|
||||||
|
..DenoFlags::default()
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn run_seed() {
|
fn run_seed() {
|
||||||
let r =
|
let r =
|
||||||
|
|
14
cli/lib.rs
14
cli/lib.rs
|
@ -303,6 +303,8 @@ async fn install_command(
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn fetch_command(flags: DenoFlags) {
|
async fn fetch_command(flags: DenoFlags) {
|
||||||
|
let args = flags.argv.clone();
|
||||||
|
|
||||||
let (mut worker, state) = create_worker_and_state(flags);
|
let (mut worker, state) = create_worker_and_state(flags);
|
||||||
|
|
||||||
let main_module = state.main_module.as_ref().unwrap().clone();
|
let main_module = state.main_module.as_ref().unwrap().clone();
|
||||||
|
@ -313,6 +315,18 @@ async fn fetch_command(flags: DenoFlags) {
|
||||||
|
|
||||||
let result = worker.execute_mod_async(&main_module, None, true).await;
|
let result = worker.execute_mod_async(&main_module, None, true).await;
|
||||||
js_check(result);
|
js_check(result);
|
||||||
|
|
||||||
|
// resolve modules for rest of args if present
|
||||||
|
let files_len = args.len();
|
||||||
|
if files_len > 2 {
|
||||||
|
for next_specifier in args.iter().take(files_len).skip(2) {
|
||||||
|
let next_module =
|
||||||
|
ModuleSpecifier::resolve_url_or_path(&next_specifier).unwrap();
|
||||||
|
let result = worker.execute_mod_async(&next_module, None, true).await;
|
||||||
|
js_check(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if state.flags.lock_write {
|
if state.flags.lock_write {
|
||||||
if let Some(ref lockfile) = state.lockfile {
|
if let Some(ref lockfile) = state.lockfile {
|
||||||
let g = lockfile.lock().unwrap();
|
let g = lockfile.lock().unwrap();
|
||||||
|
|
5
cli/tests/037_fetch_multiple.out
Normal file
5
cli/tests/037_fetch_multiple.out
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Compile [WILDCARD]/fetch/test.ts
|
||||||
|
Download http://localhost:4545/cli/tests/subdir/mod2.ts
|
||||||
|
Download http://localhost:4545/cli/tests/subdir/print_hello.ts
|
||||||
|
Compile [WILDCARD]/fetch/other.ts
|
||||||
|
Download http://localhost:4545/cli/tests/subdir/mt_text_typescript.t1.ts
|
1
cli/tests/fetch/other.ts
Normal file
1
cli/tests/fetch/other.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import "http://localhost:4545/cli/tests/subdir/mt_text_typescript.t1.ts";
|
1
cli/tests/fetch/test.ts
Normal file
1
cli/tests/fetch/test.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import "http://localhost:4545/cli/tests/subdir/mod2.ts";
|
|
@ -413,6 +413,13 @@ itest!(_036_import_map_fetch {
|
||||||
output: "036_import_map_fetch.out",
|
output: "036_import_map_fetch.out",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
itest!(_037_fetch_multiple {
|
||||||
|
args: "fetch --reload fetch/test.ts fetch/other.ts",
|
||||||
|
check_stderr: true,
|
||||||
|
http_server: true,
|
||||||
|
output: "037_fetch_multiple.out",
|
||||||
|
});
|
||||||
|
|
||||||
itest!(_038_checkjs {
|
itest!(_038_checkjs {
|
||||||
// checking if JS file is run through TS compiler
|
// checking if JS file is run through TS compiler
|
||||||
args: "run --reload --config 038_checkjs.tsconfig.json 038_checkjs.js",
|
args: "run --reload --config 038_checkjs.tsconfig.json 038_checkjs.js",
|
||||||
|
|
Loading…
Reference in a new issue