diff --git a/.gitignore b/.gitignore index 1fbc882..af99834 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target result .direnv +noise.zsh diff --git a/src/cli.rs b/src/cli.rs index d197c76..3a13e00 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -94,5 +94,20 @@ pub enum Commands { // position: Option, // }, /// Shuffles the current queueue + #[command(visible_alias = "scramble")] 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, + }, } diff --git a/src/main.rs b/src/main.rs index 2931319..0be8bea 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,7 +76,7 @@ fn main() { let thing = conn.update().unwrap(); println!("{thing}") } - Commands::Current => (), // this is basically the same as having no command + Commands::Current => (), Commands::Clear => conn.clear().unwrap(), Commands::Search { query, max } => { let query = query.join(" "); @@ -118,6 +118,30 @@ fn main() { println!("Shuffling queueueu..."); conn.shuffle(..).unwrap(); } + Commands::Repeat => { + let repeat_state = conn.status().unwrap().repeat; + conn.repeat(!repeat_state).unwrap(); + } + Commands::Random => { + let random_state = conn.status().unwrap().random; + // conn.repeat(!random_state).unwrap(); + println!("{}", random_state) + } + Commands::Single => { + let single_state = conn.status().unwrap().single; + conn.single(!single_state).unwrap(); + } + Commands::Consume => { + let consume_state = conn.status().unwrap().consume; + conn.consume(!consume_state).unwrap(); + } + Commands::Volume { percentage } => { + if let Some(volume) = percentage { + conn.volume(*volume).unwrap() + } + let vol = conn.status().unwrap().volume; + println!("Volume at {vol}%") + } } if let Commands::Stop @@ -135,8 +159,14 @@ fn main() { println!("{}", get_status(conn, cli.verbose, n)); } +// fn toggle_state(mut client: Client, state: ) -> () {} + fn format_song(song: Song) -> String { - format!("{} - {}", song.artist.unwrap(), song.title.unwrap()) + format!( + "{} - {}", + song.artist.unwrap_or("Unknown".into()), + song.title.unwrap() + ) } trait QuickFmt {