From fdecf629a6c3948d466e56c1c57e1314f6ea4161 Mon Sep 17 00:00:00 2001 From: like Date: Sun, 5 May 2024 01:16:31 +0800 Subject: [PATCH] feat: add git commit hash to `ya --version` (#1006) Co-authored-by: sxyazi --- Cargo.lock | 1 + yazi-cli/Cargo.toml | 1 + yazi-cli/build.rs | 3 +++ yazi-cli/src/args.rs | 7 +++++-- yazi-cli/src/main.rs | 12 ++++++++++-- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe2d1f46..e34c9328 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2737,6 +2737,7 @@ dependencies = [ "clap_complete_nushell", "serde_json", "tokio", + "vergen", "yazi-dds", ] diff --git a/yazi-cli/Cargo.toml b/yazi-cli/Cargo.toml index c472f125..c4ac33a9 100644 --- a/yazi-cli/Cargo.toml +++ b/yazi-cli/Cargo.toml @@ -24,6 +24,7 @@ clap_complete = "4.5.2" clap_complete_fig = "4.5.0" clap_complete_nushell = "4.5.1" serde_json = "1.0.116" +vergen = { version = "8.3.1", features = [ "build", "git", "gitcl" ] } [[bin]] name = "ya" diff --git a/yazi-cli/build.rs b/yazi-cli/build.rs index f01b5d0f..b9eb8efd 100644 --- a/yazi-cli/build.rs +++ b/yazi-cli/build.rs @@ -5,8 +5,11 @@ use std::{env, error::Error}; use clap::CommandFactory; use clap_complete::{generate_to, Shell}; +use vergen::EmitBuilder; fn main() -> Result<(), Box> { + EmitBuilder::builder().build_date().git_sha(true).emit()?; + if env::var_os("YAZI_GEN_COMPLETIONS").is_none() { return Ok(()); } diff --git a/yazi-cli/src/args.rs b/yazi-cli/src/args.rs index 554f2a1b..3f69cb08 100644 --- a/yazi-cli/src/args.rs +++ b/yazi-cli/src/args.rs @@ -4,11 +4,14 @@ use anyhow::{bail, Result}; use clap::{command, Parser, Subcommand}; #[derive(Parser)] -#[command(name = "ya", version, about, long_about = None)] -#[command(propagate_version = true)] +#[command(name = "Ya", about, long_about = None)] pub(super) struct Args { #[command(subcommand)] pub(super) command: Command, + + /// Print version + #[arg(short = 'V', long)] + pub(super) version: bool, } #[derive(Subcommand)] diff --git a/yazi-cli/src/main.rs b/yazi-cli/src/main.rs index b4ab6b03..a8c74b03 100644 --- a/yazi-cli/src/main.rs +++ b/yazi-cli/src/main.rs @@ -5,9 +5,17 @@ use clap::Parser; #[tokio::main] async fn main() -> anyhow::Result<()> { - let args = Args::parse(); + if std::env::args_os().any(|s| s == "-V" || s == "--version") { + println!( + "Ya {} ({} {})", + env!("CARGO_PKG_VERSION"), + env!("VERGEN_GIT_SHA"), + env!("VERGEN_BUILD_DATE") + ); + return Ok(()); + } - match &args.command { + match Args::parse().command { Command::Pub(cmd) => { yazi_dds::init(); if let Err(e) = yazi_dds::Client::shot(&cmd.kind, cmd.receiver, None, &cmd.body()?).await {