wash-cli 0.12.0

wasmcloud Shell (wash) CLI tool
use std::path::PathBuf;

use term_table::{
    row::Row,
    table_cell::{Alignment, TableCell},
    Table,
};

use super::{ModelRevision, ModelSummary};

pub(crate) fn show_model_details(raw: PathBuf, vetted: PathBuf) -> String {
    // TODO: in a forthcoming release, do something more meaningful than just
    // dump the file paths
    format!(
        "Wrote model details to files:\nRaw: {:?}\nJSON: {:?}",
        raw, vetted
    )
}

pub(crate) fn list_revisions_table(revisions: Vec<ModelRevision>) -> String {
    let mut table = Table::new();
    crate::util::configure_table_style(&mut table);

    table.add_row(Row::new(vec![
        TableCell::new_with_alignment("Version", 1, Alignment::Left),
        TableCell::new_with_alignment("Created", 1, Alignment::Left),
        TableCell::new_with_alignment("Deployed?", 1, Alignment::Left),
    ]));

    revisions.iter().for_each(|r| {
        table.add_row(Row::new(vec![
            TableCell::new_with_alignment(r.version.clone(), 1, Alignment::Left),
            TableCell::new_with_alignment(r.created.clone(), 1, Alignment::Left),
            TableCell::new_with_alignment(r.deployed, 1, Alignment::Left),
        ]));
    });

    table.render()
}

pub(crate) fn list_models_table(models: Vec<ModelSummary>) -> String {
    let mut table = Table::new();
    crate::util::configure_table_style(&mut table);

    table.add_row(Row::new(vec![
        TableCell::new_with_alignment("Name", 1, Alignment::Left),
        TableCell::new_with_alignment("Latest Version", 1, Alignment::Left),
        TableCell::new_with_alignment("Description", 1, Alignment::Left),
        TableCell::new_with_alignment("Deploy Status", 1, Alignment::Right),
    ]));
    models.iter().for_each(|m| {
        table.add_row(Row::new(vec![
            TableCell::new_with_alignment(m.name.clone(), 1, Alignment::Left),
            TableCell::new_with_alignment(m.version.clone(), 1, Alignment::Left),
            TableCell::new_with_alignment(m.description.clone(), 1, Alignment::Left),
            TableCell::new_with_alignment(m.deployment_status.clone(), 1, Alignment::Right),
        ]))
    });

    table.render()
}