summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build.rs16
-rw-r--r--src/main.rs17
2 files changed, 33 insertions, 0 deletions
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..fef4321
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,16 @@
+use std::process::Command;
+
+fn main() {
+ let build = String::from_utf8_lossy(
+ &Command::new("git")
+ .args(&["rev-parse", "HEAD"])
+ .output()
+ .unwrap()
+ .stdout,
+ )
+ .to_string();
+ println!(
+ "cargo::rustc-env=DWVSH_BUILD={}",
+ build.get(0..10).unwrap_or(&build)
+ );
+}
diff --git a/src/main.rs b/src/main.rs
index 821dde2..f87b69d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -82,6 +82,20 @@ fn repl(away: &mut Arc<Mutex<bool>>, env: &mut Environment) {
}
}
+fn options() {
+ let args: Vec<String> = env::args().collect();
+ for arg in args.iter() {
+ if arg.eq("--version") {
+ println!(
+ "dwvsh v{} ({})",
+ env!("CARGO_PKG_VERSION"),
+ env!("DWVSH_BUILD")
+ );
+ std::process::exit(0);
+ }
+ }
+}
+
/// Shell entry
///
/// Shell setup and entry
@@ -108,6 +122,9 @@ fn main() {
.unwrap();
};
+ // Parse flags and other arguments
+ options();
+
// Begin evaluating commands
repl(&mut away, &mut env);
}