heron_rebuild_workflow/
real_task.rs

1use anyhow::Result;
2use colored::Colorize;
3
4use crate::{AbstractTaskId, BranchSpec, StringMaker, WorkflowStrings};
5
6/// Unique id of a resolved (real) task: an abstract task id
7/// plus the branch that resolves it to an actual task.
8#[derive(Debug, Clone, Hash, PartialEq, Eq)]
9pub struct RealTaskKey {
10    pub id: AbstractTaskId,
11    pub branch: BranchSpec,
12}
13
14#[derive(Debug)]
15pub struct RealTaskStrings;
16
17impl StringMaker<RealTaskKey> for RealTaskStrings {
18    fn make_string(
19        &self,
20        task: &RealTaskKey,
21        wf: &WorkflowStrings,
22        buf: &mut String,
23    ) -> Result<()> {
24        use intern::GetStr;
25        buf.push_str(&format!("{}", wf.tasks.get(task.id)?.cyan()));
26        buf.push('[');
27        buf.push_str(&wf.get_full_branch_str(&task.branch)?);
28        buf.push(']');
29        Ok(())
30    }
31}