releasaurus_core/config/
prerelease.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use strum::{Display, EnumString};
4
5use crate::result::{ReleasaurusError, Result};
6
7#[derive(
9 Debug,
10 Clone,
11 Copy,
12 Serialize,
13 Deserialize,
14 JsonSchema,
15 PartialEq,
16 Eq,
17 Default,
18 Display,
19 EnumString,
20)]
21#[serde(rename_all = "lowercase")]
22#[strum(serialize_all = "lowercase")]
23pub enum PrereleaseStrategy {
24 #[default]
26 Versioned,
27 Static,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, Default)]
33#[serde(default)]
34pub struct PrereleaseConfig {
35 pub suffix: Option<String>,
37 pub strategy: PrereleaseStrategy,
39}
40
41impl PrereleaseConfig {
42 pub fn suffix(&self) -> Result<&str> {
44 self.suffix.as_deref().ok_or_else(|| {
45 ReleasaurusError::invalid_config(
46 "resolved prerelease config must include suffix",
47 )
48 })
49 }
50}