huskies: merge 671_refactor_migrate_pipeline_state_consumers_from_string_comparisons_to_typed_pipelinestage_enum
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
use std::path::Path;
|
||||
|
||||
use crate::config::ProjectConfig;
|
||||
use crate::pipeline_state::Stage;
|
||||
|
||||
use super::super::super::{PipelineStage, agent_config_stage, pipeline_stage};
|
||||
use super::super::worktree::find_active_story_stage;
|
||||
@@ -30,19 +31,20 @@ pub(super) fn validate_agent_stage(
|
||||
if agent_stage == PipelineStage::Other {
|
||||
return Ok(());
|
||||
}
|
||||
let Some(story_stage_dir) = find_active_story_stage(project_root, story_id) else {
|
||||
let Some(story_stage) = find_active_story_stage(project_root, story_id) else {
|
||||
return Ok(());
|
||||
};
|
||||
let expected_stage = match story_stage_dir {
|
||||
"2_current" => PipelineStage::Coder,
|
||||
"3_qa" => PipelineStage::Qa,
|
||||
"4_merge" => PipelineStage::Mergemaster,
|
||||
let expected_stage = match story_stage {
|
||||
Stage::Coding => PipelineStage::Coder,
|
||||
Stage::Qa => PipelineStage::Qa,
|
||||
Stage::Merge { .. } => PipelineStage::Mergemaster,
|
||||
_ => PipelineStage::Other,
|
||||
};
|
||||
if expected_stage != PipelineStage::Other && expected_stage != agent_stage {
|
||||
return Err(format!(
|
||||
"Agent '{name}' (stage: {agent_stage:?}) cannot be assigned to \
|
||||
story '{story_id}' in {story_stage_dir}/ (requires stage: {expected_stage:?})"
|
||||
story '{story_id}' in {}/ (requires stage: {expected_stage:?})",
|
||||
story_stage.dir_name()
|
||||
));
|
||||
}
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user