Skip to main content

changeset_operations/
types.rs

1use changeset_core::{BumpType, PrereleaseSpec};
2use derive_builder::Builder;
3use gset::Getset;
4use semver::Version;
5
6#[derive(Debug, Clone, PartialEq, Eq, Getset)]
7pub struct PackageVersion {
8    #[getset(get, vis = "pub")]
9    name: String,
10    #[getset(get, vis = "pub")]
11    current_version: Version,
12    #[getset(get, vis = "pub")]
13    new_version: Version,
14    #[getset(get_copy, vis = "pub")]
15    bump_type: BumpType,
16    #[getset(get_copy, vis = "pub")]
17    auto_bumped: bool,
18}
19
20impl PackageVersion {
21    #[must_use]
22    pub fn new(
23        name: String,
24        current_version: Version,
25        new_version: Version,
26        bump_type: BumpType,
27        auto_bumped: bool,
28    ) -> Self {
29        Self {
30            name,
31            current_version,
32            new_version,
33            bump_type,
34            auto_bumped,
35        }
36    }
37}
38
39#[derive(Debug, Clone, Default, Builder, Getset)]
40#[builder(default)]
41pub struct PackageReleaseConfig {
42    #[getset(get_as_ref, vis = "pub", ty = "Option<&PrereleaseSpec>")]
43    prerelease: Option<PrereleaseSpec>,
44    #[getset(get_copy, vis = "pub")]
45    graduate_zero: bool,
46}
47
48impl PackageReleaseConfig {
49    pub fn set_prerelease(&mut self, spec: PrereleaseSpec) {
50        self.prerelease = Some(spec);
51    }
52
53    pub fn set_graduate_zero(&mut self) {
54        self.graduate_zero = true;
55    }
56}