File: find-latest-release.rs

package info (click to toggle)
rust-wasmtime 26.0.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 48,492 kB
  • sloc: ansic: 4,003; sh: 561; javascript: 542; cpp: 254; asm: 175; ml: 96; makefile: 55
file content (26 lines) | stat: -rw-r--r-- 891 bytes parent folder | download
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
use std::process::Command;
fn main() {
    let output = Command::new("git")
        .arg("for-each-ref")
        .arg("refs/remotes/origin")
        .arg("--format")
        .arg("%(refname)")
        .output()
        .unwrap();
    assert!(output.status.success());
    let mut releases = std::str::from_utf8(&output.stdout)
        .unwrap()
        .lines()
        .filter_map(|l| l.strip_prefix("refs/remotes/origin/release-"))
        .filter_map(|l| {
            let mut parts = l.split('.');
            let major = parts.next()?.parse::<u32>().ok()?;
            let minor = parts.next()?.parse::<u32>().ok()?;
            let patch = parts.next()?.parse::<u32>().ok()?;
            Some((major, minor, patch))
        })
        .collect::<Vec<_>>();
    releases.sort();
    let (major, minor, patch) = releases.last().unwrap();
    println!("{}.{}.{}", major, minor, patch);
}