summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-28 09:08:00 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-28 14:23:55 +0100
commita3227e0a947a7cc76b01b0365f962b3b6e2fea1e (patch)
treeb55ff2c6b4d235d8da02538b15f973e8b41fad3a
parentadf1e64d23af1b428666dc94d4fee85be8807349 (diff)
Get the program name from the name of the executable
This enables us, during the development phase, to install in-development binaries as "imag-unstable-<command>" (for example), so that we have "imag" as a release binary in PATH and "imag-unstable" as a development binary in PATH. The change also enables the "imag" binary itself (if it is named "imag-unstable" for example) to call imag-unstable subcommands, because it calls "<own binary name>-<command>", for example "imag-unstable-diary" instead of "imag-diary". Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--bin/core/imag/src/main.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/bin/core/imag/src/main.rs b/bin/core/imag/src/main.rs
index ea62eb7b..d08f2191 100644
--- a/bin/core/imag/src/main.rs
+++ b/bin/core/imag/src/main.rs
@@ -142,12 +142,17 @@ fn get_commands() -> Result<Vec<String>> {
fn main() -> Result<()> {
// Initialize the Runtime and build the CLI
- let appname = "imag";
+ let appname = ::std::env::current_exe()?
+ .file_name()
+ .ok_or_else(|| format_err!("Program is not a file. This is a BUG, please file me."))?
+ .to_str()
+ .ok_or_else(|| format_err!("Program name is not UTF8. Whut?"))?
+ .to_string();
let version = make_imag_version!();
let about = "imag - the PIM suite for the commandline";
let commands = get_commands()?;
let helptext = help_text(commands.clone());
- let mut app = Runtime::get_default_cli_builder(appname, &version, about)
+ let mut app = Runtime::get_default_cli_builder(&appname, &version, about)
.settings(&[AppSettings::AllowExternalSubcommands, AppSettings::ArgRequiredElseHelp])
.arg(Arg::with_name("version")
.long("version")