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}