#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CargoProfile {
Dev,
Release,
Profile(String),
}
impl CargoProfile {
pub fn from_flags(profile: Option<&str>, default: CargoProfile) -> eyre::Result<Self> {
match profile {
Some("release") => Ok(Self::Release),
Some("debug") | Some("dev") => Ok(Self::Dev),
Some(profile) => Ok(Self::Profile(profile.into())),
None => Ok(default),
}
}
pub fn cargo_args(&self) -> Vec<String> {
match self {
Self::Dev => vec![],
Self::Release => vec!["--release".into()],
Self::Profile(p) => vec!["--profile".into(), p.into()],
}
}
pub fn name(&self) -> &str {
match self {
Self::Dev => "dev",
Self::Release => "release",
Self::Profile(p) => p,
}
}
pub fn target_subdir(&self) -> &str {
match self {
Self::Dev => "debug",
Self::Release => "release",
Self::Profile(p) => p,
}
}
}