aws_codebuild_status_terminal/
lib.rs

1use aws_codebuild_status_derive::{BuildInformation, CodebuildOutput};
2use colored::Colorize;
3use prettytable::{cell, row, Table};
4use std::collections::HashMap;
5
6pub struct TerminalOutput;
7
8impl CodebuildOutput for TerminalOutput {
9
10    fn print(build_info: HashMap<String, Vec<BuildInformation>>) {
11        let mut table = Table::new();
12        table.add_row(row!["#", "Project name", "Status", "Branch", "Finished"]);
13
14        for (i, (_, builds)) in build_info.iter().enumerate() {
15
16            for build in builds {
17                let status = match build.status.as_ref() {
18                    "SUCCEEDED" => "SUCCEEDED".green(),
19                    "IN_PROGRESS" => "IN_PROGRESS".yellow(),
20                    "FAILED" => "FAILED".red(),
21                    "TIMED_OUT" => "TIMED_OUT".red(),
22                    "STOPPED" => "STOPPED".red(),
23                    _ => "UNDEFINED".red(),
24                };
25
26                table.add_row(row![i, build.name, status, build.branch, build.timestamp]);
27            }
28        }
29
30        table.printstd();
31    }
32}