summaryrefslogtreecommitdiff
path: root/src/utils/push_version.rs
blob: 6da90399193d17ef5a810f009645e17dabe48771 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
    }
}