changeset_operations/
types.rs1use 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}