git_next_core/config/webhook/
push.rs

1//
2use crate::config::{BranchName, RepoBranches};
3use derive_more::Constructor;
4
5#[derive(Clone, Debug, Constructor, PartialEq, Eq, derive_with::With)]
6pub struct Push {
7    branch: BranchName,
8    sha: String,
9    message: String,
10}
11impl Push {
12    pub fn branch(&self, repo_branches: &RepoBranches) -> Option<Branch> {
13        if self.branch == repo_branches.main() {
14            return Some(Branch::Main);
15        }
16        if self.branch == repo_branches.next() {
17            return Some(Branch::Next);
18        }
19        if self.branch == repo_branches.dev() {
20            return Some(Branch::Dev);
21        }
22        tracing::warn!(branch = %self.branch, "Unexpected branch");
23        None
24    }
25
26    #[must_use]
27    pub fn sha(&self) -> &str {
28        &self.sha
29    }
30
31    #[must_use]
32    pub fn message(&self) -> &str {
33        &self.message
34    }
35}
36
37#[derive(Clone, Debug, PartialEq, Eq)]
38pub enum Branch {
39    Main,
40    Next,
41    Dev,
42}