add first ugly install command

This commit is contained in:
stubbfelnewpc
2020-06-23 20:38:30 +02:00
parent 35e5c29a60
commit deea3b15cc

View File

@@ -152,7 +152,53 @@ fn main() {
let unit_folder = system_cmd.value_of(SYSTEMD_UNIT_FOLDER_ARGUMENT_NAME).unwrap(); let unit_folder = system_cmd.value_of(SYSTEMD_UNIT_FOLDER_ARGUMENT_NAME).unwrap();
let service_file= shellexpand::full(&format!("{}/{}", unit_folder, ide_service_name)) let service_file= shellexpand::full(&format!("{}/{}", unit_folder, ide_service_name))
.and_then(|v| Ok(String::from(v))).unwrap(); .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 <nixpkgs> {{}}; 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") _ => println!("-1")
}; };