canic-host 0.86.5

Host-side build, install, deployment, and fleet-template library for Canic workspaces
Documentation
use super::timing::{InstallTimingLabel, InstallTimingSummary};
use crate::table::{ColumnAlign, render_table};
use std::{path::Path, 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::FUND_ROOT, timings.fund_root),
        timing_row(
            InstallTimingLabel::STAGE_RELEASE_SET,
            timings.stage_release_set,
        ),
        timing_row(
            InstallTimingLabel::RESUME_BOOTSTRAP,
            timings.resume_bootstrap,
        ),
        timing_row(InstallTimingLabel::WAIT_READY, timings.wait_ready),
        timing_row(
            InstallTimingLabel::FINALIZE_ROOT_FUNDING,
            timings.finalize_root_funding,
        ),
        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()),
    ]
}

pub(super) fn print_install_result_summary(
    network: &str,
    deployment: &str,
    fleet_template: &str,
    state_path: &Path,
) {
    println!("Install result:");
    println!("{:<14} success", "status");
    println!("{:<14} {}", "deployment", deployment);
    println!("{:<14} {}", "fleet_template", fleet_template);
    println!("{:<14} {}", "install_state", state_path.display());
    println!(
        "{:<14} canic list {} --network {}",
        "smoke_check", deployment, network
    );
}