diff --git a/cli/args/flags.rs b/cli/args/flags.rs index 5a6436dc7ea2bc..ef7b9dbba458e3 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -10315,7 +10315,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["hello", "world"], @@ -10332,7 +10332,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), ..Flags::default() @@ -10443,7 +10443,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["--", "hello", "world"], @@ -10463,7 +10463,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["--", "hello", "world"], @@ -10484,7 +10484,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["--"], @@ -10504,7 +10504,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["-1", "--test"], @@ -10524,7 +10524,7 @@ mod tests { task: Some("build".to_string()), is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), argv: svec!["--test"], @@ -10565,7 +10565,7 @@ mod tests { task: None, is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), ..Flags::default() @@ -10584,7 +10584,7 @@ mod tests { task: None, is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), config_flag: ConfigFlag::Path("deno.jsonc".to_string()), @@ -10604,7 +10604,7 @@ mod tests { task: None, is_run: false, recursive: false, - filter: None + filter: None, eval: false, }), config_flag: ConfigFlag::Path("deno.jsonc".to_string()), diff --git a/cli/main.rs b/cli/main.rs index 4bf5a2ab4216fe..82c0c2b072cebf 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -239,7 +239,7 @@ async fn run_subcommand(flags: Arc) -> Result { task: Some(run_flags.script.clone()), is_run: true, recursive: false, - filter: None + filter: None, eval: false, }; new_flags.subcommand = DenoSubcommand::Task(task_flags.clone()); diff --git a/cli/tools/task.rs b/cli/tools/task.rs index c9ccdfc49edc6c..cb7b9d9888f40f 100644 --- a/cli/tools/task.rs +++ b/cli/tools/task.rs @@ -46,6 +46,7 @@ enum TaskKind { #[derive(Debug, Clone)] struct TaskInfo { kind: TaskKind, + folder_url: Url, command: String, description: Option, dependencies: Vec, @@ -262,7 +263,10 @@ pub async fn execute_script( .run_deno_task( &Url::from_directory_path(cli_options.initial_cwd()).unwrap(), &"".to_string(), - &TaskDefinition { + &TaskInfo { + kind: TaskKind::Deno, + folder_url: Url::from_directory_path(cli_options.initial_cwd()) + .unwrap(), command: task_flags.task.as_ref().unwrap().to_string(), dependencies: vec![], description: None, @@ -299,6 +303,7 @@ fn extract_tasks( name.to_string(), TaskInfo { kind: TaskKind::Deno, + folder_url: deno_json.folder_url.clone(), command: task.command.to_string(), dependencies: task.dependencies.clone(), description: task.description.clone(), @@ -320,6 +325,7 @@ fn extract_tasks( name.to_string(), TaskInfo { kind: TaskKind::Npm, + folder_url: pkg_json.folder_url.clone(), command: task.to_string(), dependencies: vec![], description: None, @@ -691,8 +697,8 @@ fn print_available_tasks( tasks_config: &PackageTaskInfo, ) -> Result<(), std::io::Error> { writeln!(writer, "{}", colors::green("Available tasks:"))?; - // let is_cwd_root_dir = tasks_config.root.is_none(); - let is_cwd_root_dir = false; + let is_cwd_root_dir = + tasks_config.url.as_ref() == workspace_dir.workspace.root_dir().as_ref(); if tasks_config.tasks.is_empty() { writeln!( @@ -712,8 +718,8 @@ fn print_available_tasks( let mut task_descriptions = Vec::with_capacity(tasks_config.tasks.len()); for (name, task) in &tasks_config.tasks { - let is_root = *tasks_config.url.as_ref() - == *workspace_dir.workspace.root_dir().as_ref(); + let is_root = !is_cwd_root_dir + && task.folder_url == *workspace_dir.workspace.root_dir().as_ref(); task_descriptions.push(AvailableTaskDescription { is_root, @@ -727,6 +733,8 @@ fn print_available_tasks( }); } + task_descriptions.sort_by_cached_key(|d| d.name.to_string()); + for desc in task_descriptions { writeln!( writer,