diff options
-rw-r--r-- | etc/cli.yml | 5 | ||||
-rw-r--r-- | src/cli.rs | 7 | ||||
-rw-r--r-- | src/configuration.rs | 8 | ||||
-rw-r--r-- | src/main.rs | 8 | ||||
-rw-r--r-- | src/runtime.rs | 4 |
5 files changed, 32 insertions, 0 deletions
diff --git a/etc/cli.yml b/etc/cli.yml index 553a8f52..4d222a05 100644 --- a/etc/cli.yml +++ b/etc/cli.yml @@ -15,6 +15,11 @@ args: help: Sets the level of debugging information required: false + - report: + long: report + help: Print "Ok" on success, "Error" on failure (except hard errors) before exiting, regardless of verbosity + required: false + - rtp: short: r long: runtimepath @@ -43,6 +43,13 @@ impl<'a> CliConfig<'a> { } /** + * Check whether the CLI says we should run with reporting + */ + pub fn report_exit(&self) -> bool { + self.cli_matches.is_present("report") + } + + /** * Get the runtime path the CLI configured */ pub fn get_rtp(&self) -> Option<String> { diff --git a/src/configuration.rs b/src/configuration.rs index b783c734..2fbaf70e 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -19,6 +19,7 @@ pub struct Configuration { pub store_sub : String, pub editor : Option<String>, pub editor_opts : String, + pub report_exit : bool, } impl Configuration { @@ -32,18 +33,21 @@ impl Configuration { let store_sub = String::from(cfg.lookup_str("store").unwrap_or("/store")); let editor = cfg.lookup_str("editor").map(String::from); let editor_opts = String::from(cfg.lookup_str("editor-opts").unwrap_or("")); + let report_exit = cfg.lookup_boolean("report-exit").unwrap_or(false); debug!("Building configuration"); debug!(" - store sub : {}", store_sub); debug!(" - runtimepath: {}", rtp); debug!(" - editor : {:?}", editor); debug!(" - editor-opts: {}", editor_opts); + debug!(" - report exit: {}", report_exit); Configuration { store_sub: store_sub, rtp: rtp, editor: editor, editor_opts: editor_opts, + report_exit: report_exit, } } @@ -69,6 +73,10 @@ impl Configuration { self.editor_opts.clone() } + pub fn report_exit(&self) -> bool { + self.report_exit + } + } /** diff --git a/src/main.rs b/src/main.rs index 2b275895..08d2ffcf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,4 +69,12 @@ fn main() { }; info!("{}", Yellow.paint(format!("Module execution ended with {}", res))); + + if rt.report_exit() { + if res { + println!("Ok"); + } else { + println!("Error"); + } + } } diff --git a/src/runtime.rs b/src/runtime.rs index 029e68a8..5eb3ddf7 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -135,6 +135,10 @@ impl<'a> Runtime<'a> { e } + pub fn report_exit(&self) -> bool { + self.config.report_exit() || self.configuration.report_exit() + } + } impl<'a> Debug for Runtime<'a> { |