1use crate::tag::CalendarTag;
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq)]
4pub enum ReleaseIntent {
5 Existing,
6 New,
7}
8
9#[derive(Clone, Debug, Eq, PartialEq)]
10pub struct ReleaseCandidate {
11 pub repository: String,
12 pub commit: String,
13 pub tag: CalendarTag,
14 pub intent: ReleaseIntent,
15 pub tag_already_sealed: bool,
16}
17
18#[derive(Clone, Debug, Eq, PartialEq)]
19pub struct SealedRelease {
20 pub release: ReleaseCandidate,
21 pub tag_object: String,
22}
23
24#[derive(Clone, Debug, Eq, Hash, PartialEq)]
25pub enum ArtifactIdentity {
26 GithubReleaseAsset {
27 name: String,
28 },
29 MavenPackage {
30 group_id: String,
31 artifact_id: String,
32 version: String,
33 extension: String,
34 },
35}
36
37#[derive(Clone, Debug, Eq, PartialEq)]
38pub struct TargetPlan {
39 pub name: String,
40 pub publisher: String,
41 pub release: ReleaseCandidate,
42 pub artifacts: Vec<ArtifactIdentity>,
43}
44
45#[derive(Clone, Debug, Eq, PartialEq)]
46pub struct PreparedArtifact {
47 pub identity: ArtifactIdentity,
48 pub path: std::path::PathBuf,
49 pub sha256: String,
50}
51
52#[derive(Clone, Debug, Eq, PartialEq)]
53pub struct ArtifactManifest {
54 pub target: String,
55 pub publisher: String,
56 pub release: ReleaseCandidate,
57 pub artifacts: Vec<PreparedArtifact>,
58}
59
60#[derive(Clone, Debug, Eq, PartialEq)]
61pub struct ReleasePlan {
62 pub tool_version: String,
63 pub release: ReleaseCandidate,
64 pub targets: Vec<TargetPlan>,
65}