Refactor
This commit is contained in:
parent
f0ba8bf593
commit
f1add467d0
5 changed files with 242 additions and 216 deletions
115
src/noise/parser.rs
Normal file
115
src/noise/parser.rs
Normal file
|
@ -0,0 +1,115 @@
|
|||
use clap::{Parser, Subcommand, ValueHint};
|
||||
use clap_complete::Shell;
|
||||
|
||||
#[derive(Parser, Debug, PartialEq)]
|
||||
#[command(
|
||||
author = "Nox Sluijtman",
|
||||
version,
|
||||
about = "A small MPD client",
|
||||
long_about = "I like how 'mpc' works for the most part, but I don't use most of its features and there are some parts of it that I feel could be more ergonomic. In comes 'noise', an opinionated, even more minimalist 'mpd' client than 'mpc'.",
|
||||
name = "noise"
|
||||
)]
|
||||
// #[command(propagate_version = true)]
|
||||
|
||||
pub struct Cli {
|
||||
#[command(subcommand)]
|
||||
pub command: Option<Commands>,
|
||||
|
||||
/// Enables verbose output
|
||||
#[arg(short, long, global = true)]
|
||||
pub verbose: bool,
|
||||
/// Hostname where MPD listens at
|
||||
#[arg(short = 'H', long, global = true, value_hint = ValueHint::Hostname)]
|
||||
pub host: Option<String>,
|
||||
|
||||
/// Generate shell completions
|
||||
#[arg(long = "generate-completions", value_enum)]
|
||||
pub completions: Option<Shell>,
|
||||
}
|
||||
|
||||
#[derive(Subcommand, Debug, PartialEq)]
|
||||
pub enum Commands {
|
||||
/// Toggle MPD playback
|
||||
#[command(visible_alias = "t")]
|
||||
Toggle,
|
||||
/// Skip to the next track
|
||||
#[command(visible_alias = "skip")]
|
||||
Next,
|
||||
/// Revert to the previous track
|
||||
Prev,
|
||||
/// Stops playing
|
||||
Stop,
|
||||
/// Play queueueu
|
||||
#[command(visible_alias = "start")]
|
||||
Play {
|
||||
#[arg(value_hint = ValueHint::Other)]
|
||||
track: Option<u32>,
|
||||
},
|
||||
/// Set or get crossfade
|
||||
#[command(visible_alias = "fade")]
|
||||
Crossfade {
|
||||
#[arg(value_hint = ValueHint::Other)]
|
||||
seconds: Option<i64>,
|
||||
},
|
||||
// ///Update still needs some work
|
||||
// Update,
|
||||
/// Return currently playing song
|
||||
Current,
|
||||
/// Clear current queueueu
|
||||
Clear,
|
||||
/// Query database
|
||||
#[command(visible_alias = "q")]
|
||||
Search {
|
||||
///Search query
|
||||
#[arg(trailing_var_arg = true, value_hint = ValueHint::Other)]
|
||||
query: Vec<String>,
|
||||
///Only return the first n results
|
||||
#[arg(short, long, value_hint = ValueHint::Other)]
|
||||
max: Option<u32>,
|
||||
// #[arg(short, long)]
|
||||
// append: bool,
|
||||
// #[arg(short, long)]
|
||||
// insert: Option<u32>,
|
||||
},
|
||||
/// Query database autistically
|
||||
#[command(visible_alias = "fd")]
|
||||
Find {
|
||||
///Search query
|
||||
#[arg(trailing_var_arg = true, value_hint = ValueHint::Other)]
|
||||
query: Vec<String>,
|
||||
///Only return the first n results
|
||||
#[arg(short, long, value_hint = ValueHint::Other)]
|
||||
max: Option<u32>,
|
||||
#[arg(short, long)]
|
||||
append: bool,
|
||||
},
|
||||
/// List items in the current queueueu
|
||||
#[command(visible_alias = "ls")]
|
||||
List {
|
||||
#[arg(short, long)]
|
||||
file: bool,
|
||||
},
|
||||
// Add {
|
||||
// #[arg(short, long)]
|
||||
// position: Option<u32>,
|
||||
// },
|
||||
/// Shuffles the current queueue
|
||||
#[command(visible_alias = "shuf")]
|
||||
Shuffle,
|
||||
/// Toggles repeat
|
||||
Repeat,
|
||||
/// Toggles random
|
||||
Random,
|
||||
/// Toggles consume
|
||||
Consume,
|
||||
/// Toggles single
|
||||
Single,
|
||||
/// Get or set volume
|
||||
#[command(visible_alias = "vol")]
|
||||
Volume {
|
||||
#[arg(value_hint = ValueHint::Other)]
|
||||
percentage: Option<i8>,
|
||||
},
|
||||
Munch,
|
||||
Length,
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue