27 lines
778 B
Rust
27 lines
778 B
Rust
pub mod cli;
|
|
pub mod error;
|
|
pub mod serde;
|
|
pub mod style;
|
|
|
|
use std::env;
|
|
use std::path::PathBuf;
|
|
|
|
/// Get the name of the executable that was invoked.
|
|
///
|
|
/// When a symbolic or hard link is used, the name of the link is returned.
|
|
///
|
|
/// This attempts to obtain the binary name in the following order:
|
|
/// - name in first item of program arguments via `std::env::args`
|
|
/// - current executable name via `std::env::current_exe`
|
|
/// - crate name
|
|
pub fn bin_name() -> String {
|
|
env::args_os()
|
|
.next()
|
|
.filter(|path| !path.is_empty())
|
|
.map(PathBuf::from)
|
|
.or_else(|| env::current_exe().ok())
|
|
.and_then(|p| p.file_name().map(|n| n.to_owned()))
|
|
.and_then(|n| n.into_string().ok())
|
|
.unwrap_or_else(|| crate_name!().into())
|
|
}
|