diff options
author | haturau <135221985+haturatu@users.noreply.github.com> | 2024-10-13 10:44:12 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-13 10:44:12 +0900 |
commit | cedfd657a6a2f04d841db2b3fc3d7694de95eada (patch) | |
tree | 0d5d1c95cfd35bc46c230ea71f4dbf23aa0aaeea /cli/npm | |
parent | 4da77059dfd5b8d7591aa8e3b9f04386fbdce221 (diff) | |
parent | 64c304a45265705832ebb4ab4e9ef19f899ac911 (diff) |
Merge branch 'denoland:main' into main
Diffstat (limited to 'cli/npm')
-rw-r--r-- | cli/npm/managed/resolvers/common/lifecycle_scripts.rs | 37 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/local.rs | 1 |
2 files changed, 36 insertions, 2 deletions
diff --git a/cli/npm/managed/resolvers/common/lifecycle_scripts.rs b/cli/npm/managed/resolvers/common/lifecycle_scripts.rs index b358c3585..5735f5248 100644 --- a/cli/npm/managed/resolvers/common/lifecycle_scripts.rs +++ b/cli/npm/managed/resolvers/common/lifecycle_scripts.rs @@ -2,6 +2,8 @@ use super::bin_entries::BinEntries; use crate::args::LifecycleScriptsConfig; +use crate::task_runner::TaskStdio; +use crate::util::progress_bar::ProgressBar; use deno_core::anyhow::Context; use deno_npm::resolution::NpmResolutionSnapshot; use deno_runtime::deno_io::FromRawIoHandle; @@ -148,6 +150,7 @@ impl<'a> LifecycleScripts<'a> { snapshot: &NpmResolutionSnapshot, packages: &[NpmResolutionPackage], root_node_modules_dir_path: Option<&Path>, + progress_bar: &ProgressBar, ) -> Result<(), AnyError> { self.warn_not_run_scripts()?; let get_package_path = @@ -201,7 +204,15 @@ impl<'a> LifecycleScripts<'a> { { continue; } - let exit_code = crate::task_runner::run_task( + let _guard = progress_bar.update_with_prompt( + crate::util::progress_bar::ProgressMessagePrompt::Initialize, + &format!("{}: running '{script_name}' script", package.id.nv), + ); + let crate::task_runner::TaskResult { + exit_code, + stderr, + stdout, + } = crate::task_runner::run_task( crate::task_runner::RunTaskOptions { task_name: script_name, script, @@ -211,15 +222,37 @@ impl<'a> LifecycleScripts<'a> { init_cwd, argv: &[], root_node_modules_dir: root_node_modules_dir_path, + stdio: Some(crate::task_runner::TaskIo { + stderr: TaskStdio::piped(), + stdout: TaskStdio::piped(), + }), }, ) .await?; + let stdout = stdout.unwrap(); + let stderr = stderr.unwrap(); if exit_code != 0 { log::warn!( - "error: script '{}' in '{}' failed with exit code {}", + "error: script '{}' in '{}' failed with exit code {}{}{}", script_name, package.id.nv, exit_code, + if !stdout.trim_ascii().is_empty() { + format!( + "\nstdout:\n{}\n", + String::from_utf8_lossy(&stdout).trim() + ) + } else { + String::new() + }, + if !stderr.trim_ascii().is_empty() { + format!( + "\nstderr:\n{}\n", + String::from_utf8_lossy(&stderr).trim() + ) + } else { + String::new() + }, ); failed_packages.push(&package.id.nv); // assume if earlier script fails, later ones will fail too diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs index 63a972a43..54f7576ad 100644 --- a/cli/npm/managed/resolvers/local.rs +++ b/cli/npm/managed/resolvers/local.rs @@ -713,6 +713,7 @@ async fn sync_resolution_with_fs( snapshot, &package_partitions.packages, Some(root_node_modules_dir_path), + progress_bar, ) .await?; |