Files
ncspot/src/lib.rs
Thomas Frans 3c8e546445 refactor: general small refactors to simplify code
- 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()`
2024-02-03 18:52:09 +01:00

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")])
}