changepacks_core/
config.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct Config {
7    #[serde(default)]
8    pub ignore: Vec<String>,
9
10    #[serde(default = "default_base_branch")]
11    pub base_branch: String,
12
13    #[serde(default)]
14    pub latest_package: Option<String>,
15
16    #[serde(default)]
17    pub publish: HashMap<String, String>,
18
19    /// Dependency rules for forced updates.
20    /// Key: glob pattern for trigger packages (e.g., "crates/*")
21    /// Value: list of package paths that must be updated when trigger matches
22    #[serde(default)]
23    pub update_on: HashMap<String, Vec<String>>,
24}
25
26fn default_base_branch() -> String {
27    "main".to_string()
28}
29
30impl Default for Config {
31    fn default() -> Self {
32        Self {
33            ignore: Vec::new(),
34            base_branch: default_base_branch(),
35            latest_package: None,
36            publish: HashMap::new(),
37            update_on: HashMap::new(),
38        }
39    }
40}