orchestrator_config/config/
item_isolation.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
5#[serde(rename_all = "snake_case")]
6pub enum ItemIsolationStrategy {
7 #[default]
9 None,
10 GitWorktree,
12}
13
14#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
16#[serde(rename_all = "snake_case")]
17pub enum ItemIsolationCleanup {
18 #[default]
20 AfterWorkflow,
21 Never,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
27pub struct ItemIsolationConfig {
28 #[serde(default)]
30 pub strategy: ItemIsolationStrategy,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub branch_prefix: Option<String>,
34 #[serde(default)]
36 pub cleanup: ItemIsolationCleanup,
37}
38
39impl Default for ItemIsolationConfig {
40 fn default() -> Self {
41 Self {
42 strategy: ItemIsolationStrategy::None,
43 branch_prefix: None,
44 cleanup: ItemIsolationCleanup::AfterWorkflow,
45 }
46 }
47}
48
49impl ItemIsolationConfig {
50 pub fn is_enabled(&self) -> bool {
52 self.strategy != ItemIsolationStrategy::None
53 }
54}