use std::str::FromStr;
pub const INSTALL_SCRIPTLET_FILE_NAME: &str = ".INSTALL";
#[derive(
strum::AsRefStr,
Clone,
Copy,
Debug,
serde::Deserialize,
strum::Display,
Eq,
strum::IntoStaticStr,
PartialEq,
serde::Serialize,
)]
#[serde(try_from = "String", into = "String")]
pub enum MetadataFileName {
#[strum(to_string = ".BUILDINFO")]
BuildInfo,
#[strum(to_string = ".MTREE")]
Mtree,
#[strum(to_string = ".PKGINFO")]
PackageInfo,
}
impl FromStr for MetadataFileName {
type Err = crate::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s {
".BUILDINFO" => Self::BuildInfo,
".MTREE" => Self::Mtree,
".PKGINFO" => Self::PackageInfo,
_ => {
return Err(crate::PackageError::InvalidMetadataFilename {
name: s.to_string(),
}
.into());
}
})
}
}
impl From<MetadataFileName> for String {
fn from(value: MetadataFileName) -> Self {
value.to_string()
}
}
impl TryFrom<String> for MetadataFileName {
type Error = crate::Error;
fn try_from(value: String) -> Result<Self, Self::Error> {
Self::from_str(&value)
}
}