diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-07-20 10:36:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-20 10:36:14 -0400 |
commit | 73504d76b29eddc1a563e74bb379682e23347b3c (patch) | |
tree | c752f30e6adef9a1e2f3fd7a1c59e817a955ddb7 | |
parent | cee3246edbe80c665d947398ced300c6ec3b8c9b (diff) |
fix(task): resolve deno configuration file first from specified `--cwd` arg (#15257)
-rw-r--r-- | cli/args/config_file.rs | 14 | ||||
-rw-r--r-- | cli/tests/integration/task_tests.rs | 7 |
2 files changed, 21 insertions, 0 deletions
diff --git a/cli/args/config_file.rs b/cli/args/config_file.rs index 48f77d009..8e6b151a6 100644 --- a/cli/args/config_file.rs +++ b/cli/args/config_file.rs @@ -2,6 +2,8 @@ use crate::args::ConfigFlag; use crate::args::Flags; +use crate::args::TaskFlags; +use crate::fs_util; use crate::fs_util::canonicalize_path; use crate::fs_util::specifier_parent; use crate::fs_util::specifier_to_file_path; @@ -449,6 +451,18 @@ impl ConfigFile { return Ok(Some(cf)); } } + // attempt to resolve the config file from the task subcommand's + // `--cwd` when specified + if let crate::args::DenoSubcommand::Task(TaskFlags { + cwd: Some(path), + .. + }) = &flags.subcommand + { + let task_cwd = fs_util::canonicalize_path(&PathBuf::from(path))?; + if let Some(path) = Self::discover_from(&task_cwd, &mut checked)? { + return Ok(Some(path)); + } + }; // From CWD walk up to root looking for deno.json or deno.jsonc let cwd = std::env::current_dir()?; Self::discover_from(&cwd, &mut checked) diff --git a/cli/tests/integration/task_tests.rs b/cli/tests/integration/task_tests.rs index 837d9d2b7..1c3240f89 100644 --- a/cli/tests/integration/task_tests.rs +++ b/cli/tests/integration/task_tests.rs @@ -19,6 +19,13 @@ itest!(task_cwd { exit_code: 0, }); +itest!(task_cwd_resolves_config_from_specified_dir { + args: "task -q --cwd task", + output: "task/task_no_args.out", + envs: vec![("NO_COLOR".to_string(), "1".to_string())], + exit_code: 1, +}); + itest!(task_non_existent { args: "task --config task/deno.json non_existent", output: "task/task_non_existent.out", |