Skip to content

Commit

Permalink
feat: Support --verbose --version/-vV
Browse files Browse the repository at this point in the history
that provides more information:

```
build-date: 2023-06-27
build-target: aarch64-apple-darwin
features: default,fancy_no_backtrace,git,rustls,static,trust_dns,zstd_thin
commit-hash: 86731fcb8663f98e22a0ca7985f5bf407cc410f0
commit-date: 2023-06-28
rustc-version: 1.70.0
rustc-commit-hash: 90c541806f23a127002de5b4038be731ba1458ca
rustc-llvm-version: 16.0
```

Fixed #627

Signed-off-by: Jiahao XU <[email protected]>
  • Loading branch information
NobodyXu committed Jul 17, 2023
1 parent b08849b commit 4a261ee
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 7 deletions.
19 changes: 19 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/bin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ tracing-subscriber = { version = "0.3.17", features = ["fmt", "json", "ansi"], d

[build-dependencies]
embed-resource = "2.1.1"
vergen = { version = "8.2.4", features = ["build", "cargo", "git", "gitcl", "rustc"] }

[features]
default = ["static", "rustls", "trust-dns", "fancy-no-backtrace", "zstd-thin", "git"]
Expand Down
45 changes: 41 additions & 4 deletions crates/bin/build.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,44 @@
use std::{
io,
path::Path,
process::{Child, Command},
thread,
};

fn succeeds(res: io::Result<Child>) -> bool {
res.and_then(|mut child| child.wait())
.map(|status| status.success())
.unwrap_or(false)
}

fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=manifest.rc");
println!("cargo:rerun-if-changed=windows.manifest");
let handle = thread::spawn(|| {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=manifest.rc");
println!("cargo:rerun-if-changed=windows.manifest");

embed_resource::compile("manifest.rc", embed_resource::NONE);
});

let git = Command::new("git").arg("--version").spawn();

// .git is usually a dir, but it also can be a file containing
// path to another .git if it is a submodule.
//
// If build.rs is run on a git repository, then ../../.git
// should exists.
let is_git_repo = Path::new("../../.git").exists();

let mut builder = vergen::EmitBuilder::builder();
builder.all_build().all_cargo().all_rustc();

if is_git_repo && succeeds(git) {
builder.all_git();
} else {
builder.disable_git();
}

builder.emit().unwrap();

embed_resource::compile("manifest.rc", embed_resource::NONE);
handle.join().unwrap();
}
4 changes: 4 additions & 0 deletions crates/bin/src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,10 @@ pub struct Args {
#[clap(help_heading = "Meta", long, value_name = "LEVEL")]
pub log_level: Option<LevelFilter>,

/// Used with `--version` to print out verbose information.
#[clap(help_heading = "Meta", short, long, default_value_t = false)]
pub verbose: bool,

/// Equivalent to setting `log_level` to `off`.
///
/// This would override the `log_level`.
Expand Down
28 changes: 26 additions & 2 deletions crates/bin/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::time::Instant;

use binstalk::helpers::jobserver_client::LazyJobserverClient;
use binstalk::{helpers::jobserver_client::LazyJobserverClient, TARGET};
use log::LevelFilter;
use tracing::debug;

Expand All @@ -22,7 +22,31 @@ fn main() -> MainExit {
let args = args::parse();

if args.version {
println!("{}", env!("CARGO_PKG_VERSION"));
if args.verbose {
let build_date = env!("VERGEN_BUILD_DATE");

let features = env!("VERGEN_CARGO_FEATURES");

let git_sha = option_env!("VERGEN_GIT_SHA").unwrap_or("UNKNOWN");
let git_commit_date = option_env!("VERGEN_GIT_COMMIT_DATE").unwrap_or("UNKNOWN");

let rustc_semver = env!("VERGEN_RUSTC_SEMVER");
let rustc_commit_hash = env!("VERGEN_RUSTC_COMMIT_HASH");
let rustc_llvm_version = env!("VERGEN_RUSTC_LLVM_VERSION");

println!(
r#"build-date: {build_date}
build-target: {TARGET}
build-features: {features}
build-commit-hash: {git_sha}
build-commit-date: {git_commit_date}
rustc-version: {rustc_semver}
rustc-commit-hash: {rustc_commit_hash}
rustc-llvm-version: {rustc_llvm_version}"#
);
} else {
println!("{}", env!("CARGO_PKG_VERSION"));
}
MainExit::Success(None)
} else {
logging(
Expand Down
2 changes: 1 addition & 1 deletion crates/binstalk/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ pub mod helpers;
pub mod ops;

pub use binstalk_types as manifests;
pub use detect_targets::{get_desired_targets, DesiredTargets};
pub use detect_targets::{get_desired_targets, DesiredTargets, TARGET};
pub use home;

0 comments on commit 4a261ee

Please sign in to comment.