canic-host 0.99.18

Host-side App build, Fleet install, deployment, and release-set library for Canic workspaces
Documentation
use super::timing::{InstallTimingLabel, InstallTimingSummary};
use crate::table::{ColumnAlign, render_table};
use std::time::Duration;

pub(super) fn print_install_timing_summary(timings: &InstallTimingSummary, total: Duration) {
    println!("Install timing summary:");
    println!("{}", render_install_timing_summary(timings, total));
}

pub(super) fn render_install_timing_summary(
    timings: &InstallTimingSummary,
    total: Duration,
) -> String {
    let rows = [
        timing_row(
            InstallTimingLabel::CREATE_CANISTERS,
            timings.create_canisters,
        ),
        timing_row(InstallTimingLabel::BUILD_ALL, timings.build_all),
        timing_row(InstallTimingLabel::EMIT_MANIFEST, timings.emit_manifest),
        timing_row(InstallTimingLabel::INSTALL_ROOT, timings.install_root),
        timing_row(InstallTimingLabel::TOTAL, total),
    ];
    render_table(
        &["PHASE", "ELAPSED"],
        &rows,
        &[ColumnAlign::Left, ColumnAlign::Right],
    )
}

fn timing_row(label: InstallTimingLabel, duration: Duration) -> [String; 2] {
    [
        label.as_str().to_string(),
        format!("{:.2}s", duration.as_secs_f64()),
    ]
}