feat: make vm name configurable

This commit is contained in:
Oskar Manhart 2023-10-02 18:11:32 +02:00
parent 6ab6b73adb
commit 6242117629
2 changed files with 22 additions and 42 deletions

View File

@ -27,19 +27,16 @@ fn main() {
let cli = cli();
let matches = cli.clone().get_matches();
let config = winapps::load_config(None);
let client: &dyn RemoteClient = &Freerdp {};
match matches.subcommand() {
Some(("check", _)) => {
println!("Checking remote connection");
let config = winapps::load_config(None);
client.check_depends(config);
}
Some(("connect", _)) => {
println!("Connecting to remote");
let config = winapps::load_config(None);
client.run_app(config, "explorer");
}
@ -47,16 +44,16 @@ fn main() {
match command.subcommand() {
Some(("create", _)) => {
println!("Creating windows 10 vm..");
create_vm();
create_vm(config);
}
Some(("start", _)) => {
println!("Starting vm..");
start_vm();
start_vm(config);
}
Some(("kill", _)) => {
println!("Killing vm..");
kill_vm();
kill_vm(config);
}
Some((_, _)) => {

View File

@ -1,38 +1,9 @@
use home::home_dir;
use std::env;
use crate::{get_data_dir, save_config, Config};
use std::fs;
use std::path::PathBuf;
use std::process::exit;
use std::process::Command;
pub fn get_data_dir() -> PathBuf {
let home = home_dir().expect("Could not find the home path!");
let data_dir = match env::var("XDG_DATA_HOME") {
Ok(dir) => PathBuf::from(dir).join("winapps"),
Err(_) => {
println!("Couldn't read XDG_DATA_HOME, falling back to ~/.local/share");
home.join(".local/share/winapps")
}
};
if !data_dir.exists() {
let dir = data_dir.clone();
println!(
"Data directory {:?} does not exist! Creating...",
dir.to_str()
);
std::fs::create_dir_all(dir).expect("Failed to create directory");
}
if !data_dir.is_dir() {
panic!("Data directory {:?} is not a directory!", data_dir.to_str());
}
data_dir
}
pub fn create_vm() {
pub fn create_vm(mut config: Config) {
let data_dir = get_data_dir();
let output = match Command::new("quickget")
@ -49,15 +20,25 @@ pub fn create_vm() {
}
};
config.vm.name = "windows-10-22H2".to_string();
config.vm.short_name = "windows-10".to_string();
save_config(&config, None).expect("Failed to save config, VM will not start properly");
println!("{}", String::from_utf8_lossy(&output.stdout));
}
pub fn start_vm() {
pub fn start_vm(config: Config) {
let data_dir = get_data_dir();
let command = match Command::new("quickemu")
.current_dir(data_dir)
.args(["--vm", "windows-10-22H2.conf", "--display", "none"])
.args([
"--vm",
&format!("{}.conf", config.vm.name),
"--display",
"none",
])
.spawn()
{
Ok(c) => c,
@ -80,10 +61,12 @@ pub fn start_vm() {
println!("{}", String::from_utf8_lossy(&output.stdout));
}
pub fn kill_vm() {
pub fn kill_vm(config: Config) {
let data_dir = get_data_dir();
match fs::read_to_string(data_dir.join("windows-10/windows-10-22H2.pid")) {
match fs::read_to_string(
data_dir.join(format!("{}/{}.pid", config.vm.short_name, config.vm.name)),
) {
Ok(pid) => {
let pid = pid.trim();