modinfo/
version_tools.rs

1use super::*;
2
3pub trait VersionTools {
4    fn set_version(&mut self, version: &str);
5    fn bump_major(&mut self);
6    fn bump_minor(&mut self);
7    fn bump_patch(&mut self);
8    fn add_pre(&mut self, pre: &str);
9    fn add_build(&mut self, build: &str);
10}
11
12impl VersionTools for Version {
13    fn set_version(&mut self, version: &str) {
14        *self = match lenient_semver::parse_into::<Version>(version) {
15            Ok(result) => result,
16            Err(err) => {
17                lenient_semver::parse_into::<Version>(format!("0.0.0+{}", err).as_ref()).unwrap()
18            }
19        };
20    }
21
22    fn bump_major(&mut self) {
23        self.major += 1;
24        self.minor = 0;
25        self.patch = 0;
26        self.pre = Prerelease::EMPTY;
27        self.build = BuildMetadata::EMPTY;
28    }
29
30    fn bump_minor(&mut self) {
31        self.minor += 1;
32        self.patch = 0;
33        self.pre = Prerelease::EMPTY;
34        self.build = BuildMetadata::EMPTY;
35    }
36
37    fn bump_patch(&mut self) {
38        self.patch += 1;
39        self.pre = Prerelease::EMPTY;
40        self.build = BuildMetadata::EMPTY;
41    }
42
43    fn add_build(&mut self, build: &str) {
44        self.build = BuildMetadata::new(build).unwrap();
45    }
46
47    fn add_pre(&mut self, pre: &str) {
48        self.pre = Prerelease::new(pre).unwrap();
49    }
50}