aws_codebuild_status_terminal/
lib.rs1use 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}