summaryrefslogtreecommitdiff
path: root/cli/tools/task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/task.rs')
-rw-r--r--cli/tools/task.rs32
1 files changed, 19 insertions, 13 deletions
diff --git a/cli/tools/task.rs b/cli/tools/task.rs
index 5d34d39c7..6380d3822 100644
--- a/cli/tools/task.rs
+++ b/cli/tools/task.rs
@@ -4,8 +4,8 @@ use crate::args::CliOptions;
use crate::args::Flags;
use crate::args::TaskFlags;
use crate::colors;
+use crate::factory::CliFactory;
use crate::npm::CliNpmResolver;
-use crate::proc_state::ProcState;
use crate::util::fs::canonicalize_path;
use deno_core::anyhow::bail;
use deno_core::anyhow::Context;
@@ -26,9 +26,10 @@ pub async fn execute_script(
flags: Flags,
task_flags: TaskFlags,
) -> Result<i32, AnyError> {
- let ps = ProcState::from_flags(flags).await?;
- let tasks_config = ps.options.resolve_tasks_config()?;
- let maybe_package_json = ps.options.maybe_package_json();
+ let factory = CliFactory::from_flags(flags).await?;
+ let cli_options = factory.cli_options();
+ let tasks_config = cli_options.resolve_tasks_config()?;
+ let maybe_package_json = cli_options.maybe_package_json();
let package_json_scripts = maybe_package_json
.as_ref()
.and_then(|p| p.scripts.clone())
@@ -43,7 +44,7 @@ pub async fn execute_script(
};
if let Some(script) = tasks_config.get(task_name) {
- let config_file_url = ps.options.maybe_config_file_specifier().unwrap();
+ let config_file_url = cli_options.maybe_config_file_specifier().unwrap();
let config_file_path = if config_file_url.scheme() == "file" {
config_file_url.to_file_path().unwrap()
} else {
@@ -53,7 +54,7 @@ pub async fn execute_script(
Some(path) => canonicalize_path(&PathBuf::from(path))?,
None => config_file_path.parent().unwrap().to_owned(),
};
- let script = get_script_with_args(script, &ps.options);
+ let script = get_script_with_args(script, cli_options);
output_task(task_name, &script);
let seq_list = deno_task_shell::parser::parse(&script)
.with_context(|| format!("Error parsing script '{task_name}'."))?;
@@ -63,7 +64,12 @@ pub async fn execute_script(
.await;
Ok(exit_code)
} else if let Some(script) = package_json_scripts.get(task_name) {
- if let Some(package_deps) = ps.package_json_deps_installer.package_deps() {
+ let package_json_deps_installer =
+ factory.package_json_deps_installer().await?;
+ let npm_resolver = factory.npm_resolver().await?;
+ let node_resolver = factory.node_resolver().await?;
+
+ if let Some(package_deps) = package_json_deps_installer.package_deps() {
for (key, value) in package_deps {
if let Err(err) = value {
log::info!(
@@ -75,13 +81,14 @@ pub async fn execute_script(
}
}
}
- ps.package_json_deps_installer
+
+ package_json_deps_installer
.ensure_top_level_install()
.await?;
- ps.npm_resolver.resolve_pending().await?;
+ npm_resolver.resolve_pending().await?;
log::info!(
- "{} Currently only basic package.json `scripts` are supported. Programs like `rimraf` or `cross-env` will not work correctly. This will be fixed in the upcoming release.",
+ "{} Currently only basic package.json `scripts` are supported. Programs like `rimraf` or `cross-env` will not work correctly. This will be fixed in an upcoming release.",
colors::yellow("Warning"),
);
@@ -95,12 +102,11 @@ pub async fn execute_script(
.unwrap()
.to_owned(),
};
- let script = get_script_with_args(script, &ps.options);
+ let script = get_script_with_args(script, cli_options);
output_task(task_name, &script);
let seq_list = deno_task_shell::parser::parse(&script)
.with_context(|| format!("Error parsing script '{task_name}'."))?;
- let npx_commands =
- resolve_npm_commands(&ps.npm_resolver, &ps.node_resolver)?;
+ let npx_commands = resolve_npm_commands(npm_resolver, node_resolver)?;
let env_vars = collect_env_vars();
let exit_code =
deno_task_shell::execute(seq_list, env_vars, &cwd, npx_commands).await;