summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/utils.rs1
-rw-r--r--src/utils/push_version.rs30
2 files changed, 31 insertions, 0 deletions
diff --git a/src/utils.rs b/src/utils.rs
index ddd8996..1e63cbe 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -4,4 +4,5 @@ pub mod fs;
pub mod globber;
pub mod input;
pub mod logger;
+pub mod push_version;
pub mod socket_addr_helper;
diff --git a/src/utils/push_version.rs b/src/utils/push_version.rs
new file mode 100644
index 0000000..6da9039
--- /dev/null
+++ b/src/utils/push_version.rs
@@ -0,0 +1,30 @@
+pub fn push_version(current_version: impl Into<String>) -> Option<String> {
+ let version_str = current_version.into();
+ let parts: Vec<&str> = version_str.split('.').collect();
+
+ if parts.len() != 3 {
+ return None;
+ }
+
+ let major: Result<u32, _> = parts[0].parse();
+ let minor: Result<u32, _> = parts[1].parse();
+ let patch: Result<u32, _> = parts[2].parse();
+
+ if let (Ok(mut major), Ok(mut minor), Ok(mut patch)) = (major, minor, patch) {
+ patch += 1;
+
+ if patch > 99 {
+ patch = 0;
+ minor += 1;
+
+ if minor > 99 {
+ minor = 0;
+ major += 1;
+ }
+ }
+
+ Some(format!("{}.{}.{}", major, minor, patch))
+ } else {
+ None
+ }
+}