use std::path::PathBuf; #[derive(Clone, Debug)] pub enum GitOperation { UploadPack { bare: PathBuf }, ReceivePack { bare: PathBuf }, UploadArchive { bare: PathBuf }, } impl GitOperation { pub fn bare(&self) -> &PathBuf { match self { Self::UploadPack { bare } | Self::ReceivePack { bare } | Self::UploadArchive { bare } => bare, } } pub fn is_write(&self) -> bool { matches!(self, Self::ReceivePack { .. }) } pub fn is_upload_archive(&self) -> bool { matches!(self, Self::UploadArchive { .. }) } pub fn service_arg(&self) -> &'static str { match self { Self::UploadPack { .. } => "upload-pack", Self::ReceivePack { .. } => "receive-pack", Self::UploadArchive { .. } => "upload-archive", } } }