diff --git a/src/bin/installer.rs b/src/bin/installer.rs index bb15476a77c5365621d66c5cbfad41221a907647..8da1b04b50da4ce7f149e2021541bb5b7de198e5 100644 --- a/src/bin/installer.rs +++ b/src/bin/installer.rs @@ -14,10 +14,11 @@ fn main() { let stderr = io::stderr(); let mut stderr = stderr.lock(); - let mut parser = ArgParser::new(3) + let mut parser = ArgParser::new(4) .add_opt("b", "cookbook") .add_opt("c", "config") - .add_flag(&["l", "list-packages"]); + .add_flag(&["l", "list-packages"]) + .add_flag(&["live"]); parser.parse(env::args()); let config = if let Some(path) = parser.get_opt("config") { @@ -68,7 +69,7 @@ fn main() { } } else { if let Some(path) = parser.args.get(0) { - if let Err(err) = redox_installer::install(config, path, cookbook) { + if let Err(err) = redox_installer::install(config, path, cookbook, parser.found("live")) { writeln!(stderr, "installer: failed to install: {}", err).unwrap(); process::exit(1); } diff --git a/src/lib.rs b/src/lib.rs index 29e8ad608dcab4a9207b495713ad0c3de560d825..29cb8064f45a7395c2d00511e7272e295c2ac2ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -525,7 +525,7 @@ pub fn with_whole_disk<P, F, T>(disk_path: P, bootloader_bios: &[u8], bootloader ) } -pub fn install<P, S>(config: Config, output: P, cookbook: Option<S>) +pub fn install<P, S>(config: Config, output: P, cookbook: Option<S>, live: bool) -> Result<()> where P: AsRef<Path>, S: AsRef<str>, @@ -535,7 +535,7 @@ pub fn install<P, S>(config: Config, output: P, cookbook: Option<S>) if output.as_ref().is_dir() { install_dir(config, output, cookbook) } else { - let (bootloader_bios, bootloader_efi) = fetch_bootloaders(cookbook.as_ref(), false)?; + let (bootloader_bios, bootloader_efi) = fetch_bootloaders(cookbook.as_ref(), live)?; with_whole_disk(output, &bootloader_bios, &bootloader_efi, None, move |mount_path| { install_dir(config, mount_path, cookbook)