summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/args/flags.rs19
-rw-r--r--cli/args/mod.rs19
-rw-r--r--cli/clippy.toml1
-rw-r--r--cli/graph_util.rs2
-rw-r--r--cli/lsp/parent_process_checker.rs2
-rw-r--r--cli/main.rs28
-rw-r--r--cli/mainrt.rs20
-rw-r--r--cli/standalone/binary.rs2
-rw-r--r--cli/tools/lint/mod.rs2
-rw-r--r--cli/tools/test/mod.rs2
-rw-r--r--cli/tools/upgrade.rs2
-rw-r--r--cli/util/file_watcher.rs3
-rw-r--r--cli/util/logger.rs1
-rw-r--r--cli/util/v8.rs9
14 files changed, 64 insertions, 48 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 37f589937..720d8db3b 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -36,6 +36,7 @@ use deno_path_util::normalize_path;
use deno_path_util::url_to_file_path;
use deno_runtime::deno_permissions::PermissionsOptions;
use deno_runtime::deno_permissions::SysDescriptor;
+use deno_runtime::ops::otel::OtelConfig;
use log::debug;
use log::Level;
use serde::Deserialize;
@@ -967,6 +968,24 @@ impl Flags {
args
}
+ pub fn otel_config(&self) -> Option<OtelConfig> {
+ if self
+ .unstable_config
+ .features
+ .contains(&String::from("otel"))
+ {
+ Some(OtelConfig {
+ runtime_name: Cow::Borrowed("deno"),
+ runtime_version: Cow::Borrowed(crate::version::DENO_VERSION_INFO.deno),
+ deterministic: std::env::var("DENO_UNSTABLE_OTEL_DETERMINISTIC")
+ .is_ok(),
+ ..Default::default()
+ })
+ } else {
+ None
+ }
+ }
+
/// Extract the paths the config file should be discovered from.
///
/// Returns `None` if the config file should not be auto-discovered.
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 5e5bae87d..50a37b334 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -823,10 +823,8 @@ impl CliOptions {
};
let msg =
format!("DANGER: TLS certificate validation is disabled {}", domains);
- #[allow(clippy::print_stderr)]
{
- // use eprintln instead of log::warn so this always gets shown
- eprintln!("{}", colors::yellow(msg));
+ log::error!("{}", colors::yellow(msg));
}
}
@@ -1131,20 +1129,7 @@ impl CliOptions {
}
pub fn otel_config(&self) -> Option<OtelConfig> {
- if self
- .flags
- .unstable_config
- .features
- .contains(&String::from("otel"))
- {
- Some(OtelConfig {
- runtime_name: Cow::Borrowed("deno"),
- runtime_version: Cow::Borrowed(crate::version::DENO_VERSION_INFO.deno),
- ..Default::default()
- })
- } else {
- None
- }
+ self.flags.otel_config()
}
pub fn env_file_name(&self) -> Option<&String> {
diff --git a/cli/clippy.toml b/cli/clippy.toml
index e20c56c47..f1c25acfb 100644
--- a/cli/clippy.toml
+++ b/cli/clippy.toml
@@ -1,5 +1,6 @@
disallowed-methods = [
{ path = "reqwest::Client::new", reason = "create an HttpClient via an HttpClientProvider instead" },
+ { path = "std::process::exit", reason = "use deno_runtime::exit instead" },
]
disallowed-types = [
{ path = "reqwest::Client", reason = "use crate::http_util::HttpClient instead" },
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index 3f48449bc..6ed0506dd 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -188,7 +188,7 @@ pub fn graph_exit_integrity_errors(graph: &ModuleGraph) {
fn exit_for_integrity_error(err: &ModuleError) {
if let Some(err_message) = enhanced_integrity_error_message(err) {
log::error!("{} {}", colors::red("error:"), err_message);
- std::process::exit(10);
+ deno_runtime::exit(10);
}
}
diff --git a/cli/lsp/parent_process_checker.rs b/cli/lsp/parent_process_checker.rs
index e5b2b2f23..b8a42cd1a 100644
--- a/cli/lsp/parent_process_checker.rs
+++ b/cli/lsp/parent_process_checker.rs
@@ -11,7 +11,7 @@ pub fn start(parent_process_id: u32) {
std::thread::sleep(Duration::from_secs(10));
if !is_process_active(parent_process_id) {
- std::process::exit(1);
+ deno_runtime::exit(1);
}
});
}
diff --git a/cli/main.rs b/cli/main.rs
index 04daff670..20d2cb6bf 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -350,18 +350,17 @@ fn setup_panic_hook() {
eprintln!("Args: {:?}", env::args().collect::<Vec<_>>());
eprintln!();
orig_hook(panic_info);
- std::process::exit(1);
+ deno_runtime::exit(1);
}));
}
-#[allow(clippy::print_stderr)]
fn exit_with_message(message: &str, code: i32) -> ! {
- eprintln!(
+ log::error!(
"{}: {}",
colors::red_bold("error"),
message.trim_start_matches("error: ")
);
- std::process::exit(code);
+ deno_runtime::exit(code);
}
fn exit_for_error(error: AnyError) -> ! {
@@ -380,13 +379,12 @@ fn exit_for_error(error: AnyError) -> ! {
exit_with_message(&error_string, error_code);
}
-#[allow(clippy::print_stderr)]
pub(crate) fn unstable_exit_cb(feature: &str, api_name: &str) {
- eprintln!(
+ log::error!(
"Unstable API '{api_name}'. The `--unstable-{}` flag must be provided.",
feature
);
- std::process::exit(70);
+ deno_runtime::exit(70);
}
pub fn main() {
@@ -419,7 +417,7 @@ pub fn main() {
drop(profiler);
match result {
- Ok(exit_code) => std::process::exit(exit_code),
+ Ok(exit_code) => deno_runtime::exit(exit_code),
Err(err) => exit_for_error(err),
}
}
@@ -433,12 +431,21 @@ fn resolve_flags_and_init(
if err.kind() == clap::error::ErrorKind::DisplayVersion =>
{
// Ignore results to avoid BrokenPipe errors.
+ util::logger::init(None);
let _ = err.print();
- std::process::exit(0);
+ deno_runtime::exit(0);
+ }
+ Err(err) => {
+ util::logger::init(None);
+ exit_for_error(AnyError::from(err))
}
- Err(err) => exit_for_error(AnyError::from(err)),
};
+ if let Some(otel_config) = flags.otel_config() {
+ deno_runtime::ops::otel::init(otel_config)?;
+ }
+ util::logger::init(flags.log_level);
+
// TODO(bartlomieju): remove in Deno v2.5 and hard error then.
if flags.unstable_config.legacy_flag_enabled {
log::warn!(
@@ -467,7 +474,6 @@ fn resolve_flags_and_init(
deno_core::JsRuntime::init_platform(
None, /* import assertions enabled */ false,
);
- util::logger::init(flags.log_level);
Ok(flags)
}
diff --git a/cli/mainrt.rs b/cli/mainrt.rs
index f5b798f81..2951aa711 100644
--- a/cli/mainrt.rs
+++ b/cli/mainrt.rs
@@ -40,23 +40,21 @@ use std::env::current_exe;
use crate::args::Flags;
-#[allow(clippy::print_stderr)]
pub(crate) fn unstable_exit_cb(feature: &str, api_name: &str) {
- eprintln!(
+ log::error!(
"Unstable API '{api_name}'. The `--unstable-{}` flag must be provided.",
feature
);
- std::process::exit(70);
+ deno_runtime::exit(70);
}
-#[allow(clippy::print_stderr)]
fn exit_with_message(message: &str, code: i32) -> ! {
- eprintln!(
+ log::error!(
"{}: {}",
colors::red_bold("error"),
message.trim_start_matches("error: ")
);
- std::process::exit(code);
+ deno_runtime::exit(code);
}
fn unwrap_or_exit<T>(result: Result<T, AnyError>) -> T {
@@ -89,13 +87,19 @@ fn main() {
let future = async move {
match standalone {
Ok(Some(data)) => {
+ if let Some(otel_config) = data.metadata.otel_config.clone() {
+ deno_runtime::ops::otel::init(otel_config)?;
+ }
util::logger::init(data.metadata.log_level);
load_env_vars(&data.metadata.env_vars_from_env_file);
let exit_code = standalone::run(data).await?;
- std::process::exit(exit_code);
+ deno_runtime::exit(exit_code);
}
Ok(None) => Ok(()),
- Err(err) => Err(err),
+ Err(err) => {
+ util::logger::init(None);
+ Err(err)
+ }
}
};
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index b48e1c97c..ebcbf3ee6 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -517,7 +517,7 @@ impl<'a> DenoCompileBinaryWriter<'a> {
Some(bytes) => bytes,
None => {
log::info!("Download could not be found, aborting");
- std::process::exit(1)
+ deno_runtime::exit(1);
}
};
diff --git a/cli/tools/lint/mod.rs b/cli/tools/lint/mod.rs
index d8edf2404..36f1cc049 100644
--- a/cli/tools/lint/mod.rs
+++ b/cli/tools/lint/mod.rs
@@ -191,7 +191,7 @@ pub async fn lint(
linter.finish()
};
if !success {
- std::process::exit(1);
+ deno_runtime::exit(1);
}
}
diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs
index fa849614f..966b0d285 100644
--- a/cli/tools/test/mod.rs
+++ b/cli/tools/test/mod.rs
@@ -1357,6 +1357,7 @@ pub async fn report_tests(
if let Err(err) = reporter.flush_report(&elapsed, &tests, &test_steps) {
eprint!("Test reporter failed to flush: {}", err)
}
+ #[allow(clippy::disallowed_methods)]
std::process::exit(130);
}
}
@@ -1642,6 +1643,7 @@ pub async fn run_tests_with_watch(
loop {
signal::ctrl_c().await.unwrap();
if !HAS_TEST_RUN_SIGINT_HANDLER.load(Ordering::Relaxed) {
+ #[allow(clippy::disallowed_methods)]
std::process::exit(130);
}
}
diff --git a/cli/tools/upgrade.rs b/cli/tools/upgrade.rs
index 77a9f72b8..cb85859f7 100644
--- a/cli/tools/upgrade.rs
+++ b/cli/tools/upgrade.rs
@@ -540,7 +540,7 @@ pub async fn upgrade(
let Some(archive_data) = download_package(&client, download_url).await?
else {
log::error!("Download could not be found, aborting");
- std::process::exit(1)
+ deno_runtime::exit(1)
};
log::info!(
diff --git a/cli/util/file_watcher.rs b/cli/util/file_watcher.rs
index 8d734af88..21ea95e06 100644
--- a/cli/util/file_watcher.rs
+++ b/cli/util/file_watcher.rs
@@ -73,7 +73,6 @@ impl DebouncedReceiver {
}
}
-#[allow(clippy::print_stderr)]
async fn error_handler<F>(watch_future: F) -> bool
where
F: Future<Output = Result<(), AnyError>>,
@@ -84,7 +83,7 @@ where
Some(e) => format_js_error(e),
None => format!("{err:?}"),
};
- eprintln!(
+ log::error!(
"{}: {}",
colors::red_bold("error"),
error_string.trim_start_matches("error: ")
diff --git a/cli/util/logger.rs b/cli/util/logger.rs
index d93753dfd..f76663df2 100644
--- a/cli/util/logger.rs
+++ b/cli/util/logger.rs
@@ -29,6 +29,7 @@ impl log::Log for CliLogger {
// thread's state
DrawThread::hide();
self.0.log(record);
+ deno_runtime::ops::otel::handle_log(record);
DrawThread::show();
}
}
diff --git a/cli/util/v8.rs b/cli/util/v8.rs
index fb16e67b7..6e690e6f3 100644
--- a/cli/util/v8.rs
+++ b/cli/util/v8.rs
@@ -46,15 +46,14 @@ pub fn init_v8_flags(
.skip(1)
.collect::<Vec<_>>();
- #[allow(clippy::print_stderr)]
if !unrecognized_v8_flags.is_empty() {
for f in unrecognized_v8_flags {
- eprintln!("error: V8 did not recognize flag '{f}'");
+ log::error!("error: V8 did not recognize flag '{f}'");
}
- eprintln!("\nFor a list of V8 flags, use '--v8-flags=--help'");
- std::process::exit(1);
+ log::error!("\nFor a list of V8 flags, use '--v8-flags=--help'");
+ deno_runtime::exit(1);
}
if v8_flags_includes_help {
- std::process::exit(0);
+ deno_runtime::exit(0);
}
}