ockam_command 0.117.0

End-to-end encryption and mutual authentication for distributed applications.
Documentation
use colorful::Colorful;
use indoc::formatdoc;

use ockam_api::cli_state::vaults::NamedVault;

use crate::output::Output;
use crate::OckamColor;

#[derive(serde::Serialize)]
pub struct VaultOutput {
    vault: NamedVault,
}

impl VaultOutput {
    pub fn new(vault: &NamedVault) -> Self {
        Self {
            vault: vault.clone(),
        }
    }

    pub fn name(&self) -> String {
        self.vault.name().clone()
    }
}

impl Output for VaultOutput {
    fn output(&self) -> crate::error::Result<String> {
        Ok(formatdoc!(
            r#"
            Vault:
                Name: {name}
                Type: {vault_type}
                Path: {vault_path}
            "#,
            name = self
                .vault
                .name()
                .to_string()
                .color(OckamColor::PrimaryResource.color()),
            vault_type = match self.vault.is_kms() {
                true => "AWS KMS",
                false => "OCKAM",
            }
            .to_string()
            .color(OckamColor::PrimaryResource.color()),
            vault_path = self
                .vault
                .path_as_string()
                .color(OckamColor::PrimaryResource.color()),
        ))
    }

    fn list_output(&self) -> crate::error::Result<String> {
        Ok(formatdoc!(
            r#"Name: {name}
            Type: {vault_type}
            Path: {vault_path}"#,
            name = self
                .vault
                .name()
                .to_string()
                .color(OckamColor::PrimaryResource.color()),
            vault_type = match self.vault.is_kms() {
                true => "AWS KMS",
                false => "OCKAM",
            }
            .to_string()
            .color(OckamColor::PrimaryResource.color()),
            vault_path = self
                .vault
                .path_as_string()
                .color(OckamColor::PrimaryResource.color()),
        ))
    }
}