From 9b892fc42eb0538c4f3cbeff2c85b97cf5f5dc24 Mon Sep 17 00:00:00 2001 From: Gerald Pinder Date: Tue, 30 Jan 2024 18:04:37 -0500 Subject: [PATCH] Make get_modules recursive --- src/commands/bug_report.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/commands/bug_report.rs b/src/commands/bug_report.rs index 3c1456b2..3a0793c0 100644 --- a/src/commands/bug_report.rs +++ b/src/commands/bug_report.rs @@ -345,7 +345,7 @@ fn generate_github_issue( ) -> anyhow::Result { let recipe = recipe .as_ref() - .map_or_else(|| "No recipe provided".into(), |r| print_full_recipe(r)); + .map_or_else(Default::default, |r| print_full_recipe(r)); let github_template = GithubIssueTemplate::builder() .bb_version(shadow::PKG_VERSION) @@ -411,16 +411,21 @@ fn get_module_from_file(file_name: &str) -> ModuleExt { ) } -fn print_full_recipe(recipe: &Recipe) -> String { - let mut module_list: Vec = vec![]; +fn get_modules(modules: &[Module]) -> Vec { + modules + .iter() + .flat_map(|module| { + if let Some(file_name) = &module.from_file { + get_modules(&get_module_from_file(file_name).modules) + } else { + vec![module.clone()] + } + }) + .collect() +} - recipe.modules_ext.modules.iter().for_each(|module| { - if let Some(file_name) = &module.from_file { - module_list.extend(get_module_from_file(file_name).modules); - } else { - module_list.push(module.clone()); - } - }); +fn print_full_recipe(recipe: &Recipe) -> String { + let module_list: Vec = get_modules(&recipe.modules_ext.modules); let recipe = Recipe::builder() .name(recipe.name.as_ref())