unc-cli-rs 0.8.0

human-friendly console utility that helps to interact with unc Protocol from command line.
Documentation
#[derive(Debug, Clone)]
pub struct Base64Bytes {
    inner: Vec<u8>,
}

impl interactive_clap::ToCli for Base64Bytes {
    type CliVariant = Base64Bytes;
}

impl std::str::FromStr for Base64Bytes {
    type Err = String;
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        Ok(Self {
            inner: unc_primitives::serialize::from_base64(s).map_err(|err| {
                format!(
                    "parsing action {s} failed due to invalid base64 sequence: {}",
                    err
                )
            })?,
        })
    }
}

impl std::fmt::Display for Base64Bytes {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", unc_primitives::serialize::to_base64(&self.inner))
    }
}

impl Base64Bytes {
    pub fn as_bytes(&self) -> &[u8] {
        &self.inner
    }

    pub fn into_bytes(self) -> Vec<u8> {
        self.inner
    }
}