ferrflow 5.29.1

Universal semantic versioning for monorepos and classic repos
Documentation
use serde::Serialize;

#[derive(Serialize, Default)]
pub(super) struct ReleaseJson {
    pub released: Vec<ReleasedPackage>,
    pub skipped: Vec<SkippedPackage>,
    pub git: GitInfo,
    pub dry_run: bool,
}

#[derive(Serialize)]
pub(super) struct ReleasedPackage {
    pub package: String,
    pub previous_version: String,
    pub new_version: String,
    pub bump_type: String,
    pub tag: String,
    pub commit_count: usize,
    pub prerelease: bool,
    pub forge_release_url: Option<String>,
    pub forge_release_id: Option<u64>,
}

#[derive(Serialize)]
pub(super) struct SkippedPackage {
    pub package: String,
    pub reason: String,
}

#[derive(Serialize, Default)]
pub(super) struct GitInfo {
    pub commit: String,
    pub tags_pushed: Vec<String>,
    pub branch: String,
}

impl ReleaseJson {
    pub fn to_json(&self) -> Result<String, serde_json::Error> {
        serde_json::to_string(self)
    }
}