diff --git a/Cargo.lock b/Cargo.lock index 09af00526..fff463091 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4106,9 +4106,9 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "usage-lib" -version = "0.7.0-beta.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42547410624203d989610d0ea354357f3542647a387f00d0f3b1e71e772f4f53" +checksum = "d084308c1d5a54b1f8be06be6a339650f7aca300ac1ebae84949a8babff60c4c" dependencies = [ "clap", "heck 0.5.0", diff --git a/Cargo.toml b/Cargo.toml index bfd70d58b..8c937dada 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,7 +116,7 @@ toml = { version = "0.8", features = ["parse"] } toml_edit = { version = "0.22", features = ["parse"] } url = "2.5.0" #usage-lib = { path = "../usage/lib" } -usage-lib = { version = "0.7.0-beta.1", features = ["clap"] } +usage-lib = { version = "0.7.0", features = ["clap"] } versions = { version = "6.2.0", features = ["serde"] } vfox = "0.1" walkdir = "2.5.0" diff --git a/src/config/mod.rs b/src/config/mod.rs index 412db261f..d351b1e1a 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -240,28 +240,44 @@ impl Config { fn load_tasks_in_dir(&self, dir: &Path) -> Result> { let configs = self.configs_at_root(dir); - let config_tasks = configs.iter().flat_map(|cf| cf.tasks()).cloned(); + let config_tasks = configs + .par_iter() + .flat_map(|cf| cf.tasks()) + .cloned() + .collect::>(); let includes = configs .iter() .find_map(|cf| cf.task_config().includes.clone()) .unwrap_or_else(default_task_includes) - .into_iter() + .into_par_iter() .map(|p| if p.is_absolute() { p } else { dir.join(p) }) - .collect_vec(); + .filter(|p| p.exists()) + .collect::>() + .into_iter() + .unique() + .collect::>(); let extra_tasks = includes - .iter() + .par_iter() .filter(|p| { p.is_file() && p.extension().unwrap_or_default().to_string_lossy() == "toml" }) - .map(|p| self.load_task_file(p)) - .flatten_ok() - .collect::>>()?; - let file_tasks = includes.into_iter().flat_map(|p| { - self.load_tasks_includes(&p).unwrap_or_else(|err| { - warn!("loading tasks in {}: {err}", display_path(&p)); - vec![] + .map(|p| { + self.load_task_file(p).unwrap_or_else(|err| { + warn!("loading tasks in {}: {err}", display_path(p)); + vec![] + }) }) - }); + .flatten() + .collect::>(); + let file_tasks = includes + .into_par_iter() + .flat_map(|p| { + self.load_tasks_includes(&p).unwrap_or_else(|err| { + warn!("loading tasks in {}: {err}", display_path(&p)); + vec![] + }) + }) + .collect::>(); Ok(file_tasks .into_iter() .chain(config_tasks)