cubic 0.14.0

Cubic is a lightweight command line manager for virtual machines. It has a simple, daemon-less and rootless design. All Cubic virtual machines run isolated in the user context. Cubic is built on top of QEMU, KVM and cloud-init. Show all supported images: $ cubic images Create a new virtual machine instance: $ cubic create mymachine --image ubuntu:noble List all virtual machine instances: $ cubic instances Start an instance: $ cubic start <instance name> Stop an instance: $ cubic stop <instance name> Open a shell in the instance: $ cubic ssh <machine name> Copy a file from the host to the instance: $ cubic scp <path/to/host/file> <machine>:<path/to/guest/file> Copy a file from the instance to the hots: $ cubic scp <machine>:<path/to/guest/file> <path/to/host/file>
use crate::error::Error;
use serde::{Deserialize, Serialize};
use std::fmt;

#[derive(Eq, Hash, PartialEq, Default, Debug, Clone, Copy, Serialize, Deserialize)]
pub enum Arch {
    #[default]
    AMD64,
    ARM64,
}

impl Arch {
    pub fn from_str(arch: &str) -> Result<Arch, Error> {
        match arch {
            "amd64" => Ok(Arch::AMD64),
            "arm64" => Ok(Arch::ARM64),
            _ => Result::Err(Error::UnknownArch(arch.to_string())),
        }
    }
}

impl fmt::Display for Arch {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match &self {
            Arch::AMD64 => write!(f, "amd64"),
            Arch::ARM64 => write!(f, "arm64"),
        }
    }
}