- Remove `expect` in favor of `unwrap` when the `Result`'s error variant contains the info in the `expect` anyway (eg. when locking things). The line number/context are given by the backtrace. - Remove over-specification of types (`&T` instead of `&RWReadLockGuard`) - Put reused values into constants - `FromStr` instead of manual function - Change `if let Some(()) = ...` to `if T.is_some()`
49 lines
1.9 KiB
Rust
49 lines
1.9 KiB
Rust
use clap::builder::PathBufValueParser;
|
|
use librespot_playback::audio_backend;
|
|
|
|
pub const AUTHOR: &str = "Henrik Friedrichsen <henrik@affekt.org> and contributors";
|
|
pub const BIN_NAME: &str = "ncspot";
|
|
pub const CONFIGURATION_FILE_NAME: &str = "config.toml";
|
|
pub const USER_STATE_FILE_NAME: &str = "userstate.cbor";
|
|
|
|
/// Return the [Command](clap::Command) that models the program's command line arguments. The
|
|
/// command can be used to parse the actual arguments passed to the program, or to automatically
|
|
/// generate a man page using clap's mangen package.
|
|
pub fn program_arguments() -> clap::Command {
|
|
let backends = {
|
|
let backends: Vec<&str> = audio_backend::BACKENDS.iter().map(|b| b.0).collect();
|
|
format!("Audio backends: {}", backends.join(", "))
|
|
};
|
|
|
|
clap::Command::new("ncspot")
|
|
.version(env!("VERSION"))
|
|
.author(AUTHOR)
|
|
.about("cross-platform ncurses Spotify client")
|
|
.after_help(backends)
|
|
.arg(
|
|
clap::Arg::new("debug")
|
|
.short('d')
|
|
.long("debug")
|
|
.value_name("FILE")
|
|
.value_parser(PathBufValueParser::new())
|
|
.help("Enable debug logging to the specified file"),
|
|
)
|
|
.arg(
|
|
clap::Arg::new("basepath")
|
|
.short('b')
|
|
.long("basepath")
|
|
.value_name("PATH")
|
|
.value_parser(PathBufValueParser::new())
|
|
.help("custom basepath to config/cache files"),
|
|
)
|
|
.arg(
|
|
clap::Arg::new("config")
|
|
.short('c')
|
|
.long("config")
|
|
.value_name("FILE")
|
|
.help("Filename of config file in basepath")
|
|
.default_value(CONFIGURATION_FILE_NAME),
|
|
)
|
|
.subcommands([clap::Command::new("info").about("Print platform information like paths")])
|
|
}
|