use crate::tag::CalendarTag;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReleaseIntent {
Existing,
New,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleaseCandidate {
pub repository: String,
pub commit: String,
pub tag: CalendarTag,
pub intent: ReleaseIntent,
pub tag_already_sealed: bool,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SealedRelease {
pub release: ReleaseCandidate,
pub tag_object: String,
}
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub enum ArtifactIdentity {
GithubReleaseAsset {
name: String,
},
MavenPackage {
group_id: String,
artifact_id: String,
version: String,
extension: String,
},
OciImage {
repository: String,
tag: String,
platform: String,
},
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct TargetPlan {
pub name: String,
pub publisher: String,
pub release: ReleaseCandidate,
pub artifacts: Vec<ArtifactIdentity>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PreparedArtifact {
pub identity: ArtifactIdentity,
pub path: std::path::PathBuf,
pub sha256: String,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ArtifactManifest {
pub target: String,
pub publisher: String,
pub release: ReleaseCandidate,
pub artifacts: Vec<PreparedArtifact>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleasePlan {
pub tool_version: String,
pub release: ReleaseCandidate,
pub targets: Vec<TargetPlan>,
}