Skip to main content

release_tool/
domain.rs

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}