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.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/cli/tools/task.rs b/cli/tools/task.rs
index 88a0f5be0..4b05a37e5 100644
--- a/cli/tools/task.rs
+++ b/cli/tools/task.rs
@@ -70,7 +70,18 @@ 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>>();
+
+ // get the starting env vars (the PWD env var will be set by deno_task_shell)
+ let mut env_vars = std::env::vars().collect::<HashMap<String, String>>();
+ const INIT_CWD_NAME: &str = "INIT_CWD";
+ if !env_vars.contains_key(INIT_CWD_NAME) {
+ if let Ok(cwd) = std::env::current_dir() {
+ // if not set, set an INIT_CWD env var that has the cwd
+ env_vars
+ .insert(INIT_CWD_NAME.to_string(), cwd.to_string_lossy().to_string());
+ }
+ }
+
let exit_code = deno_task_shell::execute(seq_list, env_vars, &cwd).await;
Ok(exit_code)
} else {