From deea3b15cc6c2deb546035d814bea74d634e12cf Mon Sep 17 00:00:00 2001 From: stubbfelnewpc Date: Tue, 23 Jun 2020 20:38:30 +0200 Subject: [PATCH] add first ugly install command --- control/cli/src/main.rs | 48 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/control/cli/src/main.rs b/control/cli/src/main.rs index 3498db6..57bbfaa 100644 --- a/control/cli/src/main.rs +++ b/control/cli/src/main.rs @@ -152,7 +152,53 @@ fn main() { let unit_folder = system_cmd.value_of(SYSTEMD_UNIT_FOLDER_ARGUMENT_NAME).unwrap(); let service_file= shellexpand::full(&format!("{}/{}", unit_folder, ide_service_name)) .and_then(|v| Ok(String::from(v))).unwrap(); - fs::remove_file(&service_file).expect(format!("could remove service file {}", service_file).as_ref()); + let clean_service_file= shellexpand::full(&format!("{}/clean-{}", unit_folder, ide_service_name)) + .and_then(|v| Ok(String::from(v))).unwrap(); + match system_cmd.subcommand() { + (UNINSTALL_SUBCOMMAND_NAME, _ ) => { + fs::remove_file(&service_file).expect(&format!("could remove service file {}", service_file)); + fs::remove_file(&clean_service_file).expect(&format!("could remove service file {}", clean_service_file)); + }, + (INSTALL_SUBCOMMAND_NAME, Some(install_cmd)) => { + let force = install_cmd.is_present(FORCE_ARGUMENT_NAME); + let file = install_cmd.value_of(START_FILE_ARGUMENT_NAME).unwrap(); + let args = install_cmd.value_of(START_ARGS_ARGUMENT_NAME).unwrap(); + let create_service_script = format!("create_service_file.sh {}", ide_service_name); + + let nix_expression = format!("with import {{}}; callPackage {} {}", file, args); + Command::new("nix-shell") + .stderr(Stdio::null()) + .stdout(Stdio::null()) + .arg("--expr") + .arg(nix_expression) + .arg("--pure") + .arg("--run") + .arg(create_service_script) + .output() + .expect("create service file failed"); + + let mut mv_cmd = Command::new("mv"); + if force { + mv_cmd.arg("--force"); + } + + mv_cmd.arg(&format!("{}.service", ide_service_name)) + .arg(service_file) + .output() + .expect("create service file failed"); + + mv_cmd = Command::new("mv"); + if force { + mv_cmd.arg("--force"); + } + mv_cmd.arg(&format!("clean-{}.service", ide_service_name)) + .arg(clean_service_file) + .output() + .expect("create service file failed"); + println!("{}", ide_service_name); + }, + _ => {} + } } _ => println!("-1") };