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.rs9
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);