diff --git a/src/bin/installer.rs b/src/bin/installer.rs index 129fe476baf0b5c8ce08678f76a281d6a1c280a4..64fa50782b6087276122a006db7e18451fdb89dd 100644 --- a/src/bin/installer.rs +++ b/src/bin/installer.rs @@ -15,6 +15,7 @@ fn main() { let mut configs = vec![]; let mut cookbook = None; + let mut list_packages = false; for arg in env::args().skip(1) { if arg.starts_with("--cookbook=") { let path = arg.splitn(2, "--cookbook=").nth(1).unwrap().to_string(); @@ -27,6 +28,11 @@ fn main() { continue; } + if arg == "--list-packages" { + list_packages = true; + continue; + } + match File::open(&arg) { Ok(mut config_file) => { let mut config_data = String::new(); @@ -72,7 +78,11 @@ fn main() { } for config in configs { - if let Err(err) = redox_installer::install(config, cookbook.as_ref().map(String::as_ref)) { + if list_packages { + for (packagename, _package) in &config.packages { + println!("{}", packagename); + } + } else if let Err(err) = redox_installer::install(config, cookbook.as_ref().map(String::as_ref)) { writeln!(stderr, "installer: failed to install: {}", err).unwrap(); process::exit(1); }