refactor: Interpret score with a provided method on Score (#100)
First step in a direction to better orchestrate the core flow, even though it feels weird to move this logic into the `Score`. We'll refactor this as soon as we have a better solution. Co-authored-by: Ian Letourneau <letourneau.ian@gmail.com> Reviewed-on: #100
This commit is contained in:
@@ -107,12 +107,21 @@ async fn handle_events() {
|
||||
HarmonyEvent::InterpretExecutionStarted {
|
||||
topology,
|
||||
interpret,
|
||||
score,
|
||||
message,
|
||||
} => {
|
||||
let section_key = if (*sections).contains_key(&topology_key(&topology)) {
|
||||
topology_key(&topology)
|
||||
} else if (*sections).contains_key(&score_key(&score)) {
|
||||
score_key(&interpret)
|
||||
} else {
|
||||
interpret_key(&interpret)
|
||||
let key = score_key(&score);
|
||||
let section = progress::new_section(format!(
|
||||
"\n{} Interpreting score: {score}...",
|
||||
crate::theme::EMOJI_SCORE,
|
||||
));
|
||||
(*sections).insert(key.clone(), section);
|
||||
key
|
||||
};
|
||||
let section = (*sections).get(§ion_key).unwrap();
|
||||
let progress_bar = progress::add_spinner(section, message);
|
||||
@@ -122,13 +131,14 @@ async fn handle_events() {
|
||||
HarmonyEvent::InterpretExecutionFinished {
|
||||
topology,
|
||||
interpret,
|
||||
score,
|
||||
outcome,
|
||||
} => {
|
||||
let has_topology = (*sections).contains_key(&topology_key(&topology));
|
||||
let section_key = if has_topology {
|
||||
topology_key(&topology)
|
||||
} else {
|
||||
interpret_key(&interpret)
|
||||
score_key(&score)
|
||||
};
|
||||
|
||||
let section = (*sections).get(§ion_key).unwrap();
|
||||
@@ -138,9 +148,15 @@ async fn handle_events() {
|
||||
let _ = section.clear();
|
||||
|
||||
match outcome {
|
||||
Ok(outcome) => {
|
||||
progress::success(section, progress_bar, outcome.message);
|
||||
}
|
||||
Ok(outcome) => match outcome.status {
|
||||
harmony::interpret::InterpretStatus::SUCCESS => {
|
||||
progress::success(section, progress_bar, outcome.message)
|
||||
}
|
||||
harmony::interpret::InterpretStatus::NOOP => {
|
||||
progress::skip(section, progress_bar, outcome.message)
|
||||
}
|
||||
_ => progress::error(section, progress_bar, outcome.message),
|
||||
},
|
||||
Err(err) => {
|
||||
progress::error(section, progress_bar, err.to_string());
|
||||
}
|
||||
@@ -162,6 +178,10 @@ fn topology_key(topology: &str) -> String {
|
||||
format!("topology-{topology}")
|
||||
}
|
||||
|
||||
fn score_key(score: &str) -> String {
|
||||
format!("score-{score}")
|
||||
}
|
||||
|
||||
fn interpret_key(interpret: &str) -> String {
|
||||
format!("interpret-{interpret}")
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ pub static EMOJI_SKIP: Emoji<'_, '_> = Emoji("⏭️", "");
|
||||
pub static EMOJI_ERROR: Emoji<'_, '_> = Emoji("⚠️", "");
|
||||
pub static EMOJI_DEPLOY: Emoji<'_, '_> = Emoji("🚀", "");
|
||||
pub static EMOJI_TOPOLOGY: Emoji<'_, '_> = Emoji("📦", "");
|
||||
pub static EMOJI_SCORE: Emoji<'_, '_> = Emoji("🎶", "");
|
||||
|
||||
lazy_static! {
|
||||
pub static ref SPINNER_STYLE: ProgressStyle = ProgressStyle::default_spinner()
|
||||
|
||||
Reference in New Issue
Block a user