Skip to content

Commit a658c39

Browse files
committed
feat: display git sha and is dirty in oma --version
1 parent e8eb6d2 commit a658c39

File tree

4 files changed

+216
-0
lines changed

4 files changed

+216
-0
lines changed

Cargo.lock

Lines changed: 156 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ rust-embed = "8.5.0"
7575
unic-langid = "0.9.5"
7676
sys-locale = "0.3"
7777

78+
[build-dependencies]
79+
vergen-git2 = { version = "1.0.7", features = ["cargo"] }
80+
vergen = "9.0.1"
81+
7882
[features]
7983
aosc = ["dep:oma-topics", "oma-refresh/aosc", "oma-pm/aosc", "oma-contents/aosc", "dep:oma-mirror", "reqwest/blocking", "dep:oma-tum"]
8084
mirror = []

build.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use std::error::Error;
2+
3+
use vergen::{CargoBuilder, Emitter};
4+
use vergen_git2::Git2Builder;
5+
6+
fn main() -> Result<(), Box<dyn Error>> {
7+
let git = Git2Builder::default()
8+
.sha(true)
9+
.dirty(true)
10+
.describe(true, false, None)
11+
.build()?;
12+
13+
let cargo = CargoBuilder::default().features(true).debug(true).build()?;
14+
15+
Emitter::default()
16+
.add_instructions(&git)?
17+
.add_instructions(&cargo)?
18+
.emit()?;
19+
20+
Ok(())
21+
}

src/args.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ pub fn dangerous_color(msg: impl Display) -> String {
7474
#[derive(Parser, Debug)]
7575
#[command(
7676
version,
77+
long_version = long_version(),
7778
about = fl!("clap-about"),
7879
long_about = None,
7980
disable_version_flag = true,
@@ -234,6 +235,40 @@ pub enum SubCmd {
234235
Why(Why),
235236
}
236237

238+
fn long_version() -> String {
239+
let mut ver = String::from(crate_version!());
240+
241+
if env!("VERGEN_GIT_DESCRIBE").is_empty() && env!("VERGEN_GIT_SHA").is_empty() {
242+
ver.push_str("-unknown");
243+
}
244+
245+
if env!("VERGEN_GIT_DESCRIBE")
246+
.strip_prefix('v')
247+
.is_none_or(|describe_suffix| describe_suffix != ver)
248+
{
249+
ver.push('-');
250+
if env!("VERGEN_GIT_SHA").is_empty() {
251+
ver.push_str("unknown");
252+
} else {
253+
ver.push_str(env!("VERGEN_GIT_SHA"));
254+
}
255+
}
256+
257+
if env!("VERGEN_GIT_DIRTY") == "true" {
258+
ver.push_str("-dirty");
259+
}
260+
261+
if env!("VERGEN_CARGO_DEBUG") == "true" {
262+
ver.push_str("-debug");
263+
}
264+
265+
let features = env!("VERGEN_CARGO_FEATURES");
266+
ver.push_str(" with features: ");
267+
ver.push_str(features);
268+
269+
ver
270+
}
271+
237272
#[derive(Debug, Args)]
238273
pub struct Version;
239274

0 commit comments

Comments
 (0)