diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-12-14 09:10:04 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-12-14 09:10:04 +0100 |
commit | 0634952adde51f2f6a2ed8e4faa9ffee63f2bb3a (patch) | |
tree | 01e74e4a75785247db49b3ffa9e64c6fa8bc3432 /src/commands/build.rs | |
parent | fbb00f783a5a42e59a20c3097c27a038242e06c9 (diff) |
Report phase in which a job errored, if it errored
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/commands/build.rs')
-rw-r--r-- | src/commands/build.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/commands/build.rs b/src/commands/build.rs index 5aae1bb..f854026 100644 --- a/src/commands/build.rs +++ b/src/commands/build.rs @@ -316,13 +316,23 @@ pub async fn build(repo_root: &Path, writeln!(outlock, "for package {} {}\n\n", data.1.name, data.1.version)?; let parsed_log = crate::log::ParsedLog::build_from(&data.0.log_text)?; + let mut last_phase = None; + let mut error_catched = false; let lines = parsed_log.iter() .map(|line_item| match line_item { LogItem::Line(s) => Ok(String::from_utf8(s.to_vec())?.normal()), LogItem::Progress(u) => Ok(format!("#BUTIDO:PROGRESS:{}", u).bright_black()), - LogItem::CurrentPhase(p) => Ok(format!("#BUTIDO:PHASE:{}", p).bright_black()), + LogItem::CurrentPhase(p) => { + if !error_catched { + last_phase = Some(p.clone()); + } + Ok(format!("#BUTIDO:PHASE:{}", p).bright_black()) + }, LogItem::State(Ok(())) => Ok(format!("#BUTIDO:STATE:OK").green()), - LogItem::State(Err(s)) => Ok(format!("#BUTIDO:STATE:ERR:{}", s).red()), + LogItem::State(Err(s)) => { + error_catched = true; + Ok(format!("#BUTIDO:STATE:ERR:{}", s).red()) + }, }) .collect::<Result<Vec<_>>>()?; @@ -336,6 +346,10 @@ pub async fn build(repo_root: &Path, .collect::<Result<()>>()?; writeln!(outlock, "\n\n")?; + if let Some(last_phase) = last_phase { + writeln!(outlock, "\tJob errored in Phase '{}'", last_phase)?; + } + writeln!(outlock, "\n\n")?; } if had_error { |