diff --git a/Cargo.lock b/Cargo.lock index 8354351..9925244 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,7 +268,7 @@ dependencies = [ [[package]] name = "noise" -version = "0.1.9" +version = "0.1.7" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.toml b/Cargo.toml index c50e4d0..afe0ed3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "noise" -version = "0.1.9" +version = "0.1.7" edition = "2024" authors = ["Nox Sluijtman"] diff --git a/src/main.rs b/src/main.rs index 4a6e5d8..bc9d85f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use noise::{commands::Noise, parser::*}; use clap::{Command, CommandFactory, Parser}; use clap_complete::{generate, Generator}; -use mpd::{error::Error, Client}; +use mpd::Client; use std::io; fn print_completions(generator: G, cmd: &mut Command) { @@ -17,26 +17,23 @@ fn print_completions(generator: G, cmd: &mut Command) { ); } -fn main() -> Result<(), Error> { +fn main() { let cli = Cli::parse(); if let Some(completions) = cli.completions { let mut cmd = Cli::command(); eprintln!("Generatig completion file for {completions:?}..."); print_completions(completions, &mut cmd); - return Ok(()); + return; } let host = cli.host.unwrap_or("localhost:6600".into()); - let mut conn = match Client::connect(host) { - Ok(client) => client, - Err(err) => return Err(err), - }; + let mut conn = Client::connect(host).expect("Connection failed"); if let Some(cmd) = &cli.command { match cmd { - Commands::Play { track } => Noise::play(&mut conn, *track), + Commands::Play { track } => conn.noise_play(*track), Commands::Stop => conn.stop().unwrap(), Commands::Toggle => conn.toggle(), Commands::Next => conn.next().unwrap(), @@ -44,9 +41,9 @@ fn main() -> Result<(), Error> { Commands::List { file } => conn.list_queue(*file, cli.verbose), Commands::Current => (), Commands::Clear => conn.clear().unwrap(), - Commands::Search { query, max } => Noise::search(&mut conn, query, *max), - Commands::Find { query, max, append } => Noise::find(&mut conn, query, *max, *append), - Commands::Crossfade { seconds } => Noise::crossfade(&mut conn, *seconds), + Commands::Search { query, max } => conn.noise_search(query, *max), + Commands::Find { query, max, append } => conn.noise_find(query, *max, *append), + Commands::Crossfade { seconds } => conn.noise_crossfade(*seconds), Commands::Shuffle => conn.shuf(), Commands::Repeat => conn.toggle_repeat(), Commands::Random => conn.toggle_random(), @@ -63,18 +60,10 @@ fn main() -> Result<(), Error> { | Commands::Search { .. } | Commands::Find { .. } | Commands::Crossfade { .. } - | Commands::Volume { .. } | Commands::Shuffle = cmd { - return Ok(()); + return; } } - let _things: Vec = conn - .queue() - .unwrap() - .iter() - .map(|x| x.place.unwrap().pos.to_string()) - .collect(); println!("{}", conn.get_status(cli.verbose)); - return Ok(()); } diff --git a/src/noise/commands.rs b/src/noise/commands.rs index ac30325..1696ef1 100644 --- a/src/noise/commands.rs +++ b/src/noise/commands.rs @@ -3,13 +3,13 @@ extern crate mpd; use libnotify::Notification; use mpd::{Client, Query, Song, State, Term}; -use std::{env, time::Duration}; +use std::time::Duration; pub trait Noise { - fn find(&mut self, query: &Vec, max: Option, append: bool); - fn search(&mut self, query: &Vec, max: Option); - fn crossfade(&mut self, seconds: Option); - fn play(&mut self, track: Option); + fn noise_find(&mut self, query: &Vec, max: Option, append: bool); + fn noise_search(&mut self, query: &Vec, max: Option); + fn noise_crossfade(&mut self, seconds: Option); + fn noise_play(&mut self, track: Option); fn toggle(&mut self); fn munch(&mut self); fn length(&mut self); @@ -24,7 +24,7 @@ pub trait Noise { } impl Noise for Client { - fn find(&mut self, query: &Vec, max: Option, append: bool) { + fn noise_find(&mut self, query: &Vec, max: Option, append: bool) { let query = query.join(" "); let max = max.unwrap_or(self.stats().unwrap().songs); @@ -38,7 +38,7 @@ impl Noise for Client { } } - fn search(&mut self, query: &Vec, max: Option) { + fn noise_search(&mut self, query: &Vec, max: Option) { let query = query.join(" "); let max = max.unwrap_or(self.stats().unwrap().songs); @@ -48,7 +48,7 @@ impl Noise for Client { .for_each(|x| println!("{}", x.file)); } - fn crossfade(&mut self, seconds: Option) { + fn noise_crossfade(&mut self, seconds: Option) { if let Some(seconds) = seconds { self.crossfade(seconds).unwrap(); } else { @@ -62,7 +62,7 @@ impl Noise for Client { } } - fn play(&mut self, track: Option) { + fn noise_play(&mut self, track: Option) { if let Some(i) = track { self.switch(i).unwrap(); } else { @@ -79,8 +79,9 @@ impl Noise for Client { } fn munch(&mut self) { - let current_song = self.currentsong().unwrap().unwrap().place.unwrap(); - self.delete(current_song.pos).unwrap(); + // let current_song = self.currentsong().unwrap().unwrap().place.unwrap(); + // self.delete(current_song).unwrap(); + todo!("Not net implemented") } fn length(&mut self) { @@ -174,23 +175,12 @@ impl Noise for Client { State::Play => "playing", }; - fn to_mins_string(dur: Duration) -> String { - let seconds = dur.as_secs(); - - let minutes = seconds / 60; - let rem_seconds = seconds % 60; - - format!("{minutes:02}:{rem_seconds:02}") - } - let duration = status.time.map_or("".into(), |(stamp, total)| { let stamp = to_mins_string(stamp); let total = to_mins_string(total); format!("{stamp}/{total}") }); - // let pos_in_queue = format!("{current_pos}/{queue_lenth}"); - output.push(format!("[{state}] {duration}")); output.join("\n") @@ -208,16 +198,16 @@ fn format_song(song: Song) -> String { // fn get_status(client: &mut Client, verbose: bool) -> String {} fn send_notification(body: &str) { - let key = "XDG_SESSION_TYPE"; - match env::var(key) { - Ok(key) => { - if key != "tty" { - libnotify::init("noise").unwrap(); - let notify = Notification::new("Noise", Some(body), None); - notify.show().unwrap(); - libnotify::uninit(); - } - } - Err(_) => return, - } + libnotify::init("noise").unwrap(); + let notify = Notification::new("Noise", Some(body), None); + notify.show().unwrap(); +} + +fn to_mins_string(dur: Duration) -> String { + let seconds = dur.as_secs(); + + let minutes = seconds / 60; + let rem_seconds = seconds % 60; + + format!("{minutes:02}:{rem_seconds:02}") } diff --git a/src/noise/parser.rs b/src/noise/parser.rs index 71b5b87..4505ae6 100644 --- a/src/noise/parser.rs +++ b/src/noise/parser.rs @@ -29,13 +29,6 @@ pub struct Cli { #[derive(Subcommand, Debug, PartialEq)] pub enum Commands { - /// Stops playing - Stop, - /// Play queueueu - Play { - #[arg(value_hint = ValueHint::CommandString)] - track: Option, - }, /// Toggle MPD playback #[command(visible_alias = "t")] Toggle, @@ -44,6 +37,14 @@ pub enum Commands { Next, /// Revert to the previous track Prev, + /// Stops playing + Stop, + /// Play queueueu + #[command(visible_alias = "start")] + Play { + #[arg(value_hint = ValueHint::Other)] + track: Option, + }, /// Set or get crossfade #[command(visible_alias = "fade")] Crossfade { @@ -52,6 +53,8 @@ pub enum Commands { }, // ///Update still needs some work // Update, + /// Return currently playing song + Current, /// Clear current queueueu Clear, /// Query database @@ -68,8 +71,6 @@ pub enum Commands { // #[arg(short, long)] // insert: Option, }, - /// Return currently playing song - Current, /// Query database autistically #[command(visible_alias = "fd")] Find { @@ -109,7 +110,6 @@ pub enum Commands { #[arg(value_hint = ValueHint::Other)] percentage: Option, }, - /// Remove the current track Munch, Length, }