diff --git a/src/bin/installer.rs b/src/bin/installer.rs index bb15476a77..8da1b04b50 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 29e8ad608d..29cb8064f4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -525,7 +525,7 @@ pub fn with_whole_disk(disk_path: P, bootloader_bios: &[u8], bootloader ) } -pub fn install(config: Config, output: P, cookbook: Option) +pub fn install(config: Config, output: P, cookbook: Option, live: bool) -> Result<()> where P: AsRef, S: AsRef, @@ -535,7 +535,7 @@ pub fn install(config: Config, output: P, cookbook: Option) 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)