use crate::config::{BranchName, RepoBranches};
use derive_more::Constructor;
#[derive(Debug, Constructor, derive_with::With)]
pub struct Push {
branch: BranchName,
sha: String,
message: String,
}
impl Push {
pub fn branch(&self, repo_branches: &RepoBranches) -> Option<Branch> {
if self.branch == repo_branches.main() {
return Some(Branch::Main);
}
if self.branch == repo_branches.next() {
return Some(Branch::Next);
}
if self.branch == repo_branches.dev() {
return Some(Branch::Dev);
}
tracing::warn!(branch = %self.branch, "Unexpected branch");
None
}
#[must_use]
pub fn sha(&self) -> &str {
&self.sha
}
#[must_use]
pub fn message(&self) -> &str {
&self.message
}
}
#[derive(Debug, PartialEq, Eq)]
pub enum Branch {
Main,
Next,
Dev,
}