summaryrefslogtreecommitdiff
path: root/src/bin/subplot.rs
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2021-04-23 20:33:32 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2021-04-23 20:33:32 +0100
commitb484cca704c71992532a1cd3e6bb6b191341cb7d (patch)
tree3c7e05f222e213dafedeb88b3728db7afb29598c /src/bin/subplot.rs
parentec9652a72aa8ff47fa64b8a1b5ba9afe84be4f7e (diff)
downloadsubplot-b484cca704c71992532a1cd3e6bb6b191341cb7d.tar.gz
version: Add support for git-testament derived version info
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'src/bin/subplot.rs')
-rw-r--r--src/bin/subplot.rs37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/bin/subplot.rs b/src/bin/subplot.rs
index ebbdec8..4a650ee 100644
--- a/src/bin/subplot.rs
+++ b/src/bin/subplot.rs
@@ -17,6 +17,10 @@ use std::time::UNIX_EPOCH;
mod cli;
+use git_testament::*;
+
+git_testament!(VERSION);
+
#[derive(Debug, StructOpt)]
struct Toplevel {
#[structopt(flatten)]
@@ -53,6 +57,33 @@ impl Cmd {
}
}
+fn long_version() -> Result<String> {
+ use std::fmt::Write as _;
+ let mut ret = String::new();
+ writeln!(ret, "{}", render_testament!(VERSION))?;
+ writeln!(ret, "Crate version: {}", env!("CARGO_PKG_VERSION"))?;
+ if let Some(branch) = VERSION.branch_name {
+ writeln!(ret, "Built from branch: {}", branch)?;
+ } else {
+ writeln!(ret, "Branch information is missing.")?;
+ }
+ writeln!(ret, "Commit info: {}", VERSION.commit)?;
+ if VERSION.modifications.is_empty() {
+ writeln!(ret, "Working tree is clean")?;
+ } else {
+ use GitModification::*;
+ for fmod in VERSION.modifications {
+ match fmod {
+ Added(f) => writeln!(ret, "Added: {}", String::from_utf8_lossy(f))?,
+ Removed(f) => writeln!(ret, "Removed: {}", String::from_utf8_lossy(f))?,
+ Modified(f) => writeln!(ret, "Modified: {}", String::from_utf8_lossy(f))?,
+ Untracked(f) => writeln!(ret, "Untracked: {}", String::from_utf8_lossy(f))?,
+ }
+ }
+ }
+ Ok(ret)
+}
+
#[derive(Debug, StructOpt)]
/// Extract embedded files from a subplot document
///
@@ -337,7 +368,11 @@ impl Codegen {
}
fn main() {
- let args = Toplevel::from_args();
+ let argparser = Toplevel::clap();
+ let version = long_version().unwrap();
+ let argparser = argparser.long_version(version.as_str());
+ let args = argparser.get_matches();
+ let args = Toplevel::from_clap(&args);
args.resources.handle();
match args.run() {
Ok(_) => {}