use config::newtype; use derive_more::Display; // use git_next_config as config; #[derive( Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, derive_more::Constructor, derive_more::Display, )] #[display("{}", sha)] pub struct Commit { sha: Sha, message: Message, } impl Commit { pub const fn sha(&self) -> &Sha { &self.sha } pub const fn message(&self) -> &Message { &self.message } } impl From for Commit { fn from(value: config::webhook::Push) -> Self { Self::new( Sha::new(value.sha().to_owned()), Message::new(value.message().to_owned()), ) } } newtype!(Sha: String, Display, Hash: "The unique SHA for a git commit."); newtype!(Message: String, Hash: "The commit message for a git commit."); #[derive(Clone, Debug)] pub struct Histories { pub main: Vec, pub next: Vec, pub dev: Vec, } pub mod log { use git_next_config as config; pub type Result = core::result::Result; #[derive(Debug, thiserror::Error)] pub enum Error { #[error("branch: {branch}, error: {error}")] Gix { branch: config::BranchName, error: String, }, #[error("lock")] Lock, } }