rusta-cli 1.0.29

macOS arm64 CLI for creating and managing Ubuntu VMs on Tart
Documentation
use crate::cli::DeleteArgs;
use crate::commands::confirm;
use crate::error::{Error, Result};
use crate::io as rio;
use crate::state;
use crate::tart;

pub fn run(args: DeleteArgs) -> Result<u8> {
    let vm = args.vm;
    if !tart::exists(&vm)? {
        return Err(Error::not_found(format!("VM '{vm}' not found")));
    }
    if tart::is_running(&vm)? {
        if !args.force_running {
            return Err(Error::msg(format!(
                "VM '{vm}' is currently running. Run `rusta down {vm}` first, or pass --force-running."
            )));
        }
        rio::info(&format!("Stopping running VM '{vm}' before deletion..."));
        let _ = tart::stop(&vm);
    }

    if !args.yes && !confirm(&format!("Delete VM '{vm}'?"))? {
        rio::skip("aborted");
        return Ok(0);
    }

    tart::delete(&vm)?;
    state::clear_default_if_matches(&vm)?;
    let _ = state::forget_vm(&vm);
    let _ = std::fs::remove_file(crate::paths::pid_file(&vm));
    rio::ok(&format!("VM '{vm}' deleted"));
    Ok(0)
}