diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 09:08:00 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 14:23:55 +0100 |
commit | a3227e0a947a7cc76b01b0365f962b3b6e2fea1e (patch) | |
tree | b55ff2c6b4d235d8da02538b15f973e8b41fad3a | |
parent | adf1e64d23af1b428666dc94d4fee85be8807349 (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.rs | 9 |
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") |