use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
use crate::{error::ReleasaurusError, error::Result};
#[derive(
Debug,
Clone,
Copy,
Serialize,
Deserialize,
JsonSchema,
PartialEq,
Eq,
Default,
Display,
EnumString,
)]
#[serde(rename_all = "lowercase")]
#[strum(serialize_all = "lowercase")]
pub enum PrereleaseStrategy {
#[default]
Versioned,
Static,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, Default)]
#[serde(default)]
pub struct PrereleaseConfig {
pub suffix: Option<String>,
pub strategy: PrereleaseStrategy,
}
impl PrereleaseConfig {
pub fn suffix(&self) -> Result<&str> {
self.suffix.as_deref().ok_or_else(|| {
ReleasaurusError::invalid_config(
"resolved prerelease config must include suffix",
)
})
}
}