gitversion_rs/output/
variables.rs1use serde::{Deserialize, Serialize};
6use std::collections::BTreeMap;
7
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12#[serde(rename_all = "PascalCase", default)]
13pub struct VersionVariables {
14 pub major: u32,
15 pub minor: u32,
16 pub patch: u32,
17
18 pub pre_release_tag: String,
19 pub pre_release_tag_with_dash: String,
20 pub pre_release_label: String,
21 pub pre_release_label_with_dash: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub pre_release_number: Option<i64>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub weighted_pre_release_number: Option<i64>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub build_meta_data: Option<i64>,
29 pub full_build_meta_data: String,
30
31 pub major_minor_patch: String,
32 pub sem_ver: String,
33 pub full_sem_ver: String,
34
35 pub assembly_sem_ver: String,
36 pub assembly_sem_file_ver: String,
37 pub informational_version: String,
38
39 pub branch_name: String,
40 pub escaped_branch_name: String,
41 pub sha: String,
42 pub short_sha: String,
43
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub version_source_distance: Option<i64>,
46 pub version_source_increment: String,
47 pub version_source_sem_ver: String,
48 pub version_source_sha: String,
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub commits_since_version_source: Option<i64>,
52
53 pub commit_date: String,
54 pub uncommitted_changes: i64,
55}
56
57impl VersionVariables {
58 pub fn to_map(&self) -> BTreeMap<String, String> {
60 let mut m = BTreeMap::new();
61 let opt = |o: Option<i64>| o.map(|v| v.to_string()).unwrap_or_default();
62 m.insert("Major".into(), self.major.to_string());
63 m.insert("Minor".into(), self.minor.to_string());
64 m.insert("Patch".into(), self.patch.to_string());
65 m.insert("PreReleaseTag".into(), self.pre_release_tag.clone());
66 m.insert(
67 "PreReleaseTagWithDash".into(),
68 self.pre_release_tag_with_dash.clone(),
69 );
70 m.insert("PreReleaseLabel".into(), self.pre_release_label.clone());
71 m.insert(
72 "PreReleaseLabelWithDash".into(),
73 self.pre_release_label_with_dash.clone(),
74 );
75 m.insert("PreReleaseNumber".into(), opt(self.pre_release_number));
76 m.insert(
77 "WeightedPreReleaseNumber".into(),
78 opt(self.weighted_pre_release_number),
79 );
80 m.insert("BuildMetaData".into(), opt(self.build_meta_data));
81 m.insert(
82 "FullBuildMetaData".into(),
83 self.full_build_meta_data.clone(),
84 );
85 m.insert("MajorMinorPatch".into(), self.major_minor_patch.clone());
86 m.insert("SemVer".into(), self.sem_ver.clone());
87 m.insert("FullSemVer".into(), self.full_sem_ver.clone());
88 m.insert("AssemblySemVer".into(), self.assembly_sem_ver.clone());
89 m.insert(
90 "AssemblySemFileVer".into(),
91 self.assembly_sem_file_ver.clone(),
92 );
93 m.insert(
94 "InformationalVersion".into(),
95 self.informational_version.clone(),
96 );
97 m.insert("BranchName".into(), self.branch_name.clone());
98 m.insert("EscapedBranchName".into(), self.escaped_branch_name.clone());
99 m.insert("Sha".into(), self.sha.clone());
100 m.insert("ShortSha".into(), self.short_sha.clone());
101 m.insert(
102 "VersionSourceDistance".into(),
103 opt(self.version_source_distance),
104 );
105 m.insert(
106 "VersionSourceIncrement".into(),
107 self.version_source_increment.clone(),
108 );
109 m.insert(
110 "VersionSourceSemVer".into(),
111 self.version_source_sem_ver.clone(),
112 );
113 m.insert("VersionSourceSha".into(), self.version_source_sha.clone());
114 m.insert(
115 "CommitsSinceVersionSource".into(),
116 opt(self.commits_since_version_source),
117 );
118 m.insert("CommitDate".into(), self.commit_date.clone());
119 m.insert(
120 "UncommittedChanges".into(),
121 self.uncommitted_changes.to_string(),
122 );
123 m
124 }
125}