diff options
author | Kayla Washburn <mckayla@hey.com> | 2022-06-08 15:30:16 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-08 15:30:16 -0600 |
commit | 94068b7109af64eba2cb9fd299e62705a5358069 (patch) | |
tree | 7ba43427fb32d43009437898bbd336932c02e754 /cli/tools/task.rs | |
parent | a0a13b3a1b5b654ad36a25c4785cab539555840a (diff) |
feat(task): add `--cwd` flag for configuring the working directory (#14823)
Diffstat (limited to 'cli/tools/task.rs')
-rw-r--r-- | cli/tools/task.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/cli/tools/task.rs b/cli/tools/task.rs index 578fd1100..28dd0a853 100644 --- a/cli/tools/task.rs +++ b/cli/tools/task.rs @@ -4,12 +4,14 @@ use crate::colors; use crate::config_file::ConfigFile; use crate::flags::Flags; use crate::flags::TaskFlags; +use crate::fs_util; use crate::proc_state::ProcState; use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::AnyError; use std::collections::BTreeMap; use std::collections::HashMap; +use std::path::PathBuf; use std::sync::Arc; fn get_tasks_config( @@ -71,7 +73,10 @@ pub async fn execute_script( return Ok(1); } - let cwd = config_file_path.parent().unwrap(); + let cwd = match task_flags.cwd { + Some(path) => fs_util::canonicalize_path(&PathBuf::from(path))?, + None => config_file_path.parent().unwrap().to_owned(), + }; let task_name = task_flags.task; let maybe_script = tasks_config.get(&task_name); @@ -95,7 +100,7 @@ pub async fn execute_script( let seq_list = deno_task_shell::parser::parse(script) .with_context(|| format!("Error parsing script '{}'.", task_name))?; let env_vars = std::env::vars().collect::<HashMap<String, String>>(); - let exit_code = deno_task_shell::execute(seq_list, env_vars, cwd).await; + let exit_code = deno_task_shell::execute(seq_list, env_vars, &cwd).await; Ok(exit_code) } else { eprintln!("Task not found: {}", task_name); |