mirror of
https://github.com/gitui-org/gitui
synced 2026-05-22 16:38:28 +00:00
encode nightly version, commit, date into binary
This commit is contained in:
parent
0966953050
commit
2ec6d632ed
7 changed files with 52 additions and 46 deletions
|
|
@ -12,6 +12,7 @@ readme = "README.md"
|
|||
license = "MIT"
|
||||
categories = ["command-line-utilities"]
|
||||
keywords = ["git", "gui", "cli", "terminal", "ui"]
|
||||
build = "build.rs"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
|
|
@ -65,6 +66,9 @@ which = "6.0"
|
|||
pretty_assertions = "1.4"
|
||||
tempfile = "3"
|
||||
|
||||
[build-dependencies]
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock"] }
|
||||
|
||||
[badges]
|
||||
maintenance = { status = "actively-developed" }
|
||||
|
||||
|
|
|
|||
12
Makefile
12
Makefile
|
|
@ -16,7 +16,7 @@ debug:
|
|||
RUST_BACKTRACE=true cargo run --features=timing -- ${ARGS}
|
||||
|
||||
build-release:
|
||||
cargo build --release --locked
|
||||
GITUI_RELEASE=1 cargo build --release --locked
|
||||
|
||||
release-mac: build-release
|
||||
strip target/release/gitui
|
||||
|
|
@ -42,7 +42,7 @@ build-linux-musl-debug:
|
|||
cargo build --target=x86_64-unknown-linux-musl
|
||||
|
||||
build-linux-musl-release:
|
||||
cargo build --release --target=x86_64-unknown-linux-musl
|
||||
GITUI_RELEASE=1 cargo build --release --target=x86_64-unknown-linux-musl
|
||||
|
||||
test-linux-musl:
|
||||
cargo test --workspace --target=x86_64-unknown-linux-musl
|
||||
|
|
@ -64,9 +64,9 @@ build-linux-arm-debug:
|
|||
cargo build --target=arm-unknown-linux-gnueabihf
|
||||
|
||||
build-linux-arm-release:
|
||||
cargo build --release --target=aarch64-unknown-linux-gnu
|
||||
cargo build --release --target=armv7-unknown-linux-gnueabihf
|
||||
cargo build --release --target=arm-unknown-linux-gnueabihf
|
||||
GITUI_RELEASE=1 cargo build --release --target=aarch64-unknown-linux-gnu
|
||||
GITUI_RELEASE=1 cargo build --release --target=armv7-unknown-linux-gnueabihf
|
||||
GITUI_RELEASE=1 cargo build --release --target=arm-unknown-linux-gnueabihf
|
||||
|
||||
test:
|
||||
cargo test --workspace
|
||||
|
|
@ -100,4 +100,4 @@ licenses:
|
|||
cargo bundle-licenses --format toml --output THIRDPARTY.toml
|
||||
|
||||
clean:
|
||||
cargo clean
|
||||
cargo clean
|
||||
|
|
|
|||
36
build.rs
Normal file
36
build.rs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
fn get_git_hash() -> String {
|
||||
use std::process::Command;
|
||||
|
||||
let commit = Command::new("git")
|
||||
.arg("rev-parse")
|
||||
.arg("--short")
|
||||
.arg("--verify")
|
||||
.arg("HEAD")
|
||||
.output();
|
||||
if let Ok(commit_output) = commit {
|
||||
let commit_string =
|
||||
String::from_utf8_lossy(&commit_output.stdout);
|
||||
|
||||
return commit_string.lines().next().unwrap_or("").into();
|
||||
}
|
||||
|
||||
panic!("Can not get git commit: {}", commit.unwrap_err());
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let build_date = chrono::Local::now().date_naive();
|
||||
|
||||
let build_name = if std::env::var("GITUI_RELEASE").is_ok() {
|
||||
format!(
|
||||
"{} {} ({})",
|
||||
env!("CARGO_PKG_VERSION"),
|
||||
build_date,
|
||||
get_git_hash()
|
||||
)
|
||||
} else {
|
||||
format!("nightly {} ({})", build_date, get_git_hash())
|
||||
};
|
||||
|
||||
println!("cargo:warning=buildname '{}'", build_name);
|
||||
println!("cargo:rustc-env=GITUI_BUILD_NAME={}", build_name);
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ use crate::bug_report;
|
|||
use anyhow::{anyhow, Result};
|
||||
use asyncgit::sync::RepoPath;
|
||||
use clap::{
|
||||
crate_authors, crate_description, crate_name, crate_version, Arg,
|
||||
crate_authors, crate_description, crate_name, Arg,
|
||||
Command as ClapApp,
|
||||
};
|
||||
use simplelog::{Config, LevelFilter, WriteLogger};
|
||||
|
|
@ -63,7 +63,7 @@ pub fn process_cmdline() -> Result<CliArgs> {
|
|||
fn app() -> ClapApp {
|
||||
ClapApp::new(crate_name!())
|
||||
.author(crate_authors!())
|
||||
.version(crate_version!())
|
||||
.version(env!("GITUI_BUILD_NAME"))
|
||||
.about(crate_description!())
|
||||
.help_template(
|
||||
"\
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ mod string_utils;
|
|||
mod strings;
|
||||
mod tabs;
|
||||
mod ui;
|
||||
mod version;
|
||||
mod watcher;
|
||||
|
||||
use crate::{app::App, args::process_cmdline};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ use crate::{
|
|||
app::Environment,
|
||||
keys::{key_match, SharedKeyConfig},
|
||||
strings, ui,
|
||||
version::Version,
|
||||
};
|
||||
use anyhow::Result;
|
||||
use asyncgit::hash;
|
||||
|
|
@ -70,7 +69,10 @@ impl DrawableComponent for HelpPopup {
|
|||
|
||||
f.render_widget(
|
||||
Paragraph::new(Line::from(vec![Span::styled(
|
||||
Cow::from(format!("gitui {}", Version::new(),)),
|
||||
Cow::from(format!(
|
||||
"gitui {}",
|
||||
env!("GITUI_BUILD_NAME"),
|
||||
)),
|
||||
Style::default(),
|
||||
)]))
|
||||
.alignment(Alignment::Right),
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
use std::{env, fmt};
|
||||
|
||||
/// version type
|
||||
#[derive(Default)]
|
||||
pub struct Version {
|
||||
major: u32,
|
||||
minor: u32,
|
||||
patch: u32,
|
||||
}
|
||||
|
||||
impl Version {
|
||||
/// read version at compile time from env variables
|
||||
pub fn new() -> Self {
|
||||
let mut res = Self::default();
|
||||
let major_str = env!("CARGO_PKG_VERSION_MAJOR");
|
||||
if let Ok(major) = major_str.parse::<u32>() {
|
||||
res.major = major;
|
||||
}
|
||||
let minor_str = env!("CARGO_PKG_VERSION_MINOR");
|
||||
if let Ok(minor) = minor_str.parse::<u32>() {
|
||||
res.minor = minor;
|
||||
}
|
||||
let patch_str = env!("CARGO_PKG_VERSION_PATCH");
|
||||
if let Ok(patch) = patch_str.parse::<u32>() {
|
||||
res.patch = patch;
|
||||
}
|
||||
res
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Version {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "v{}.{}.{}", self.major, self.minor, self.patch)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue