use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use crate::{
analyzer::release::{Release, Tag},
config::release_type::ReleaseType,
updater::manager::{AdditionalManifestFile, ManifestFile},
};
#[derive(Debug, Default, Clone, Serialize)]
pub struct ReleasableSubPackage {
pub name: String,
pub release_type: ReleaseType,
pub manifest_files: Option<Vec<ManifestFile>>,
}
impl ReleasableSubPackage {
pub fn to_releasable(
&self,
parent: &ReleasablePackage,
) -> ReleasablePackage {
ReleasablePackage {
name: self.name.clone(),
release_type: self.release_type,
tag: parent.tag.clone(),
manifest_files: self.manifest_files.clone(),
..Default::default()
}
}
}
#[derive(Debug, Default)]
pub struct ReleasablePackage {
pub name: String,
pub release_type: ReleaseType,
pub tag: Tag,
pub notes: String,
pub tag_compare_link: String,
pub sha_compare_link: String,
pub sub_packages: Vec<ReleasableSubPackage>,
pub manifest_files: Option<Vec<ManifestFile>>,
pub additional_manifest_files: Option<Vec<AdditionalManifestFile>>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct SerializableReleasablePackage {
pub name: String,
pub path: PathBuf,
pub release_type: ReleaseType,
pub release: Release,
#[serde(skip)]
pub sub_packages: Vec<ReleasableSubPackage>,
#[serde(skip)]
pub manifest_files: Option<Vec<ManifestFile>>,
#[serde(skip)]
pub additional_manifest_files: Option<Vec<AdditionalManifestFile>>,
}