diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2019-01-15 09:19:58 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-01-15 12:19:58 -0500 |
commit | c870cf40823a4900278f8ddf03489338c169878b (patch) | |
tree | 80c171f7bb36c988f459a4d0ee248a40d3feb34b /src | |
parent | ac6ac5037ff53f4e7b9693aeed24f1e3ef1339ad (diff) |
Add --prefetch flag for deps prefetch without running (#1475)
Diffstat (limited to 'src')
-rw-r--r-- | src/flags.rs | 5 | ||||
-rw-r--r-- | src/isolate.rs | 11 | ||||
-rw-r--r-- | src/libdeno.rs | 1 | ||||
-rw-r--r-- | src/main.rs | 4 |
4 files changed, 18 insertions, 3 deletions
diff --git a/src/flags.rs b/src/flags.rs index f2d0150b1..970aceb3c 100644 --- a/src/flags.rs +++ b/src/flags.rs @@ -28,6 +28,7 @@ pub struct DenoFlags { pub allow_env: bool, pub allow_run: bool, pub types: bool, + pub prefetch: bool, } pub fn get_usage(opts: &Options) -> String { @@ -107,6 +108,9 @@ fn set_recognized_flags( if matches.opt_present("types") { flags.types = true; } + if matches.opt_present("prefetch") { + flags.prefetch = true; + } if !matches.free.is_empty() { rest.extend(matches.free); @@ -142,6 +146,7 @@ pub fn set_flags( opts.optflag("r", "reload", "Reload cached remote resources."); opts.optflag("", "v8-options", "Print V8 command line options."); opts.optflag("", "types", "Print runtime TypeScript declarations."); + opts.optflag("", "prefetch", "Prefetch the dependencies."); let mut flags = DenoFlags::default(); diff --git a/src/isolate.rs b/src/isolate.rs index 9c9e7dd4f..bbd52c64d 100644 --- a/src/isolate.rs +++ b/src/isolate.rs @@ -254,7 +254,11 @@ impl Isolate { } /// Executes the provided JavaScript module. - pub fn execute_mod(&self, js_filename: &str) -> Result<(), JSError> { + pub fn execute_mod( + &self, + js_filename: &str, + is_prefetch: bool, + ) -> Result<(), JSError> { let out = code_fetch_and_maybe_compile(&self.state, js_filename, ".").unwrap(); @@ -271,6 +275,7 @@ impl Isolate { self.as_raw_ptr(), filename_ptr, js_source_ptr, + if is_prefetch { 1 } else { 0 }, ) }; if r == 0 { @@ -662,7 +667,9 @@ mod tests { let snapshot = libdeno::deno_buf::empty(); let isolate = Isolate::new(snapshot, state, dispatch_sync); tokio_util::init(|| { - isolate.execute_mod(filename).expect("execute_mod error"); + isolate + .execute_mod(filename, false) + .expect("execute_mod error"); isolate.event_loop().ok(); }); } diff --git a/src/libdeno.rs b/src/libdeno.rs index 40a5a51d0..f8f8a61e0 100644 --- a/src/libdeno.rs +++ b/src/libdeno.rs @@ -151,6 +151,7 @@ extern "C" { user_data: *const c_void, js_filename: *const c_char, js_source: *const c_char, + resolve_only: i32, ) -> c_int; pub fn deno_resolve_ok( i: *const isolate, diff --git a/src/main.rs b/src/main.rs index a9c3f42f0..d6188ef62 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,6 +79,8 @@ fn main() { log::LevelFilter::Warn }); + let should_prefetch = flags.prefetch; + let state = Arc::new(isolate::IsolateState::new(flags, rest_argv, None)); let snapshot = snapshot::deno_snapshot(); let isolate = isolate::Isolate::new(snapshot, state, ops::dispatch); @@ -93,7 +95,7 @@ fn main() { if isolate.state.argv.len() > 1 { let input_filename = &isolate.state.argv[1]; isolate - .execute_mod(input_filename) + .execute_mod(input_filename, should_prefetch) .unwrap_or_else(print_err_and_exit); } |