summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/compiler.rs17
-rw-r--r--cli/main.rs78
-rw-r--r--cli/ops.rs10
-rw-r--r--cli/state.rs2
4 files changed, 55 insertions, 52 deletions
diff --git a/cli/compiler.rs b/cli/compiler.rs
index b299f0a4c..3a036a627 100644
--- a/cli/compiler.rs
+++ b/cli/compiler.rs
@@ -142,11 +142,18 @@ pub fn compile_async(
}
}
- let r = state
- .dir
- .fetch_module_meta_data(&module_name, ".", true, true);
- let module_meta_data_after_compile = r.unwrap();
-
+ Ok(())
+ }).and_then(move |_| {
+ state.dir.fetch_module_meta_data_async(
+ &module_name,
+ ".",
+ true,
+ true,
+ ).map_err(|e| {
+ // TODO(95th) Instead of panicking, We could translate this error to Diagnostic.
+ panic!("{}", e)
+ })
+ }).and_then(move |module_meta_data_after_compile| {
// Explicit drop to keep reference alive until future completes.
drop(compiling_job);
diff --git a/cli/main.rs b/cli/main.rs
index c1873ebf1..cfce2254b 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -49,9 +49,9 @@ use crate::worker::Worker;
use deno::v8_set_flags;
use flags::DenoFlags;
use flags::DenoSubcommand;
+use futures::future;
use futures::lazy;
use futures::Future;
-use futures::future;
use log::{LevelFilter, Metadata, Record};
use std::env;
@@ -97,51 +97,48 @@ pub fn print_file_info(
worker: Worker,
url: &str,
) -> impl Future<Item = Worker, Error = ()> {
- worker::fetch_module_meta_data_and_maybe_compile_async(
- &worker.state,
- url,
- ".",
- ).and_then(move |out| {
- println!("{} {}", ansi::bold("local:".to_string()), &(out.filename));
-
- println!(
- "{} {}",
- ansi::bold("type:".to_string()),
- msg::enum_name_media_type(out.media_type)
- );
-
- if out.maybe_output_code_filename.is_some() {
- println!(
- "{} {}",
- ansi::bold("compiled:".to_string()),
- out.maybe_output_code_filename.as_ref().unwrap(),
- );
- }
+ state::fetch_module_meta_data_and_maybe_compile_async(&worker.state, url, ".")
+ .and_then(move |out| {
+ println!("{} {}", ansi::bold("local:".to_string()), &(out.filename));
- if out.maybe_source_map_filename.is_some() {
println!(
"{} {}",
- ansi::bold("map:".to_string()),
- out.maybe_source_map_filename.as_ref().unwrap()
+ ansi::bold("type:".to_string()),
+ msg::enum_name_media_type(out.media_type)
);
- }
- let modules = worker.modules.lock().unwrap();
- if let Some(deps) = worker.modules.deps(&out.module_name) {
- println!("{}{}", ansi::bold("deps:\n".to_string()), deps.name);
- if let Some(ref depsdeps) = deps.deps {
- for d in depsdeps {
- println!("{}", d);
+ if out.maybe_output_code_filename.is_some() {
+ println!(
+ "{} {}",
+ ansi::bold("compiled:".to_string()),
+ out.maybe_output_code_filename.as_ref().unwrap(),
+ );
+ }
+
+ if out.maybe_source_map_filename.is_some() {
+ println!(
+ "{} {}",
+ ansi::bold("map:".to_string()),
+ out.maybe_source_map_filename.as_ref().unwrap()
+ );
+ }
+
+ if let Some(deps) = worker.modules.lock().unwrap().deps(&out.module_name)
+ {
+ println!("{}{}", ansi::bold("deps:\n".to_string()), deps.name);
+ if let Some(ref depsdeps) = deps.deps {
+ for d in depsdeps {
+ println!("{}", d);
+ }
}
+ } else {
+ println!(
+ "{} cannot retrieve full dependency graph",
+ ansi::bold("deps:".to_string()),
+ );
}
- } else {
- println!(
- "{} cannot retrieve full dependency graph",
- ansi::bold("deps:".to_string()),
- );
- }
- Ok(worker)
- }).map_err(|err| println!("{}", err))
+ Ok(worker)
+ }).map_err(|err| println!("{}", err))
}
fn create_worker_and_state(
@@ -196,6 +193,7 @@ fn fetch_or_info_command(
worker
.execute_mod_async(&main_url, true)
+ .map_err(print_err_and_exit)
.and_then(move |()| {
if print_info {
future::Either::A(print_file_info(worker, &main_module))
@@ -207,7 +205,7 @@ fn fetch_or_info_command(
js_check(result);
Ok(())
})
- }).map_err(print_err_and_exit)
+ })
});
tokio_util::run(main_future);
}
diff --git a/cli/ops.rs b/cli/ops.rs
index af1dddcee..c76983c47 100644
--- a/cli/ops.rs
+++ b/cli/ops.rs
@@ -33,11 +33,11 @@ use deno::Op;
use deno::PinnedBuf;
use flatbuffers::FlatBufferBuilder;
use futures;
+use futures::future;
use futures::Async;
use futures::Poll;
use futures::Sink;
use futures::Stream;
-use futures::future;
use hyper;
use hyper::rt::Future;
use rand::{thread_rng, Rng};
@@ -2066,7 +2066,7 @@ fn op_create_worker(
Ok(
worker
.execute_mod_async(&specifier_url, false)
- .and_then(move |worker| {
+ .and_then(move |()| {
let mut workers_tl = parent_state.workers.lock().unwrap();
workers_tl.insert(rid, worker.shared());
let builder = &mut FlatBufferBuilder::new();
@@ -2084,10 +2084,8 @@ fn op_create_worker(
},
))
}).map_err(|err| match err {
- (errors::RustOrJsError::Js(_), _worker) => {
- errors::worker_init_failed()
- }
- (errors::RustOrJsError::Rust(err), _worker) => err,
+ errors::RustOrJsError::Js(_) => errors::worker_init_failed(),
+ errors::RustOrJsError::Rust(err) => err,
}),
)
}).map_err(DenoError::from);
diff --git a/cli/state.rs b/cli/state.rs
index 34d2b87cd..d7681fc79 100644
--- a/cli/state.rs
+++ b/cli/state.rs
@@ -103,7 +103,7 @@ impl ThreadSafeState {
}
}
-fn fetch_module_meta_data_and_maybe_compile_async(
+pub fn fetch_module_meta_data_and_maybe_compile_async(
state: &ThreadSafeState,
specifier: &str,
referrer: &str,