Cleaned up many warnings

This commit is contained in:
MrDulfin 2024-05-20 00:23:45 -04:00
parent f79bf8d477
commit 0fa97c27d0
5 changed files with 58 additions and 90 deletions

View file

@ -1,7 +1,7 @@
use std::{ use std::{
fs::{self, File, OpenOptions},
io::{Error, Read, Write},
path::PathBuf, path::PathBuf,
fs::{File, OpenOptions, self},
io::{Error, Write, Read},
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -41,7 +41,7 @@ impl ConfigLibrary {
pub fn open(&self) -> Result<File, Error> { pub fn open(&self) -> Result<File, Error> {
match File::open(self.path.as_path()) { match File::open(self.path.as_path()) {
Ok(ok) => Ok(ok), Ok(ok) => Ok(ok),
Err(e) => Err(e) Err(e) => Err(e),
} }
} }
} }
@ -62,18 +62,17 @@ impl ConfigLibraries {
pub fn get_default(&self) -> Result<&ConfigLibrary, ConfigError> { pub fn get_default(&self) -> Result<&ConfigLibrary, ConfigError> {
for library in &self.libraries { for library in &self.libraries {
if library.uuid == self.default_library { if library.uuid == self.default_library {
return Ok(library) return Ok(library);
} }
} }
Err(ConfigError::NoDefaultLibrary) Err(ConfigError::NoDefaultLibrary)
} }
pub fn get_library(&self, uuid: &Uuid) -> Result<ConfigLibrary, ConfigError> { pub fn get_library(&self, uuid: &Uuid) -> Result<ConfigLibrary, ConfigError> {
for library in &self.libraries { for library in &self.libraries {
// dbg!(&library.uuid, &uuid); // dbg!(&library.uuid, &uuid);
if &library.uuid == uuid { if &library.uuid == uuid {
return Ok(library.to_owned()) return Ok(library.to_owned());
} }
} }
Err(ConfigError::NoConfigLibrary(*uuid)) Err(ConfigError::NoConfigLibrary(*uuid))
@ -82,7 +81,7 @@ impl ConfigLibraries {
pub fn uuid_exists(&self, uuid: &Uuid) -> bool { pub fn uuid_exists(&self, uuid: &Uuid) -> bool {
for library in &self.libraries { for library in &self.libraries {
if &library.uuid == uuid { if &library.uuid == uuid {
return true return true;
} }
} }
false false
@ -91,7 +90,7 @@ impl ConfigLibraries {
#[derive(Debug, Default, Serialize, Deserialize, Clone)] #[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct ConfigConnections { pub struct ConfigConnections {
pub listenbrainz_token: Option<String> pub listenbrainz_token: Option<String>,
} }
#[derive(Debug, Default, Serialize, Deserialize, Clone)] #[derive(Debug, Default, Serialize, Deserialize, Clone)]
@ -122,7 +121,12 @@ impl Config {
pub fn write_file(&self) -> Result<(), Error> { pub fn write_file(&self) -> Result<(), Error> {
let mut writer = self.path.clone(); let mut writer = self.path.clone();
writer.set_extension("tmp"); writer.set_extension("tmp");
let mut file = OpenOptions::new().create(true).truncate(true).read(true).write(true).open(&writer)?; let mut file = OpenOptions::new()
.create(true)
.truncate(true)
.read(true)
.write(true)
.open(&writer)?;
let config = to_string_pretty(self)?; let config = to_string_pretty(self)?;
// dbg!(&config); // dbg!(&config);
@ -136,15 +140,20 @@ impl Config {
Some(path) => { Some(path) => {
let mut writer = path.clone(); let mut writer = path.clone();
writer.set_extension("tmp"); writer.set_extension("tmp");
let mut file = OpenOptions::new().create(true).truncate(true).read(true).write(true).open(&writer)?; let mut file = OpenOptions::new()
.create(true)
.truncate(true)
.read(true)
.write(true)
.open(&writer)?;
let config = to_string_pretty(self)?; let config = to_string_pretty(self)?;
// dbg!(&config); // dbg!(&config);
file.write_all(config.as_bytes())?; file.write_all(config.as_bytes())?;
fs::rename(writer, self.path.as_path())?; fs::rename(writer, self.path.as_path())?;
Ok(()) Ok(())
}, }
None => Err(ConfigError::NoBackupLibrary.into()) None => Err(ConfigError::NoBackupLibrary.into()),
} }
} }
@ -175,17 +184,23 @@ pub enum ConfigError {
BadPlaylist, BadPlaylist,
#[error("No backup Config folder present")] #[error("No backup Config folder present")]
NoBackupLibrary, NoBackupLibrary,
} }
#[cfg(test)] #[cfg(test)]
pub mod tests { pub mod tests {
use std::{path::PathBuf, sync::{Arc, RwLock}}; use super::{Config, ConfigLibrary};
use crate::music_storage::library::MusicLibrary; use crate::music_storage::library::MusicLibrary;
use super::{Config, ConfigLibraries, ConfigLibrary}; use std::{
path::PathBuf,
sync::{Arc, RwLock},
};
pub fn new_config_lib() -> (Config, MusicLibrary) { pub fn new_config_lib() -> (Config, MusicLibrary) {
let lib = ConfigLibrary::new(PathBuf::from("test-config/library"), String::from("library"), None); let lib = ConfigLibrary::new(
PathBuf::from("test-config/library"),
String::from("library"),
None,
);
let mut config = Config { let mut config = Config {
path: PathBuf::from("test-config/config_test.json"), path: PathBuf::from("test-config/config_test.json"),
..Default::default() ..Default::default()
@ -194,7 +209,11 @@ pub mod tests {
config.push_library(lib); config.push_library(lib);
config.write_file().unwrap(); config.write_file().unwrap();
let mut lib = MusicLibrary::init(Arc::new(RwLock::from(config.clone())), dbg!(config.libraries.default_library)).unwrap(); let mut lib = MusicLibrary::init(
Arc::new(RwLock::from(config.clone())),
dbg!(config.libraries.default_library),
)
.unwrap();
lib.scan_folder("test-config/music/").unwrap(); lib.scan_folder("test-config/music/").unwrap();
lib.save(config.clone()).unwrap(); lib.save(config.clone()).unwrap();
@ -206,20 +225,22 @@ pub mod tests {
// dbg!(&config); // dbg!(&config);
let mut lib = MusicLibrary::init(Arc::new(RwLock::from(config.clone())), config.libraries.get_default().unwrap().uuid).unwrap(); let mut lib = MusicLibrary::init(
Arc::new(RwLock::from(config.clone())),
config.libraries.get_default().unwrap().uuid,
)
.unwrap();
lib.scan_folder("test-config/music/").unwrap(); lib.scan_folder("test-config/music/").unwrap();
lib.save(config.clone()).unwrap(); lib.save(config.clone()).unwrap();
(config, lib) (config, lib)
} }
#[test] #[test]
fn test3() { fn test3() {
let (config, lib) = read_config_lib(); let (config, _) = read_config_lib();
_ = config.write_file(); _ = config.write_file();

View file

@ -12,7 +12,6 @@ use std::error::Error;
use uuid::Uuid; use uuid::Uuid;
use crate::music_player::player::Player; use crate::music_player::player::Player;
use crate::music_storage::library::URI;
use crate::{ use crate::{
config::config::Config, music_controller::queue::Queue, music_storage::library::MusicLibrary, config::config::Config, music_controller::queue::Queue, music_storage::library::MusicLibrary,
}; };
@ -21,7 +20,7 @@ pub struct Controller<P: Player> {
pub queue: Queue, pub queue: Queue,
pub config: Arc<RwLock<Config>>, pub config: Arc<RwLock<Config>>,
pub library: MusicLibrary, pub library: MusicLibrary,
pub player: P, pub player: Box<P>,
} }
#[derive(Debug)] #[derive(Debug)]
@ -55,19 +54,12 @@ impl<T: Send, U: Send> MailMan<T, U> {
} }
} }
enum PlayerCmd {
Test(URI),
}
enum PlayerRes {
Test,
}
#[allow(unused_variables)] #[allow(unused_variables)]
impl<P> Controller<P> { impl<P: Player> Controller<P> {
pub fn start<T>(config_path: T) -> Result<Self, Box<dyn Error>> pub fn start<T>(config_path: T) -> Result<Self, Box<dyn Error>>
where where
std::path::PathBuf: std::convert::From<T>, std::path::PathBuf: std::convert::From<T>,
P: Player,
{ {
let config_path = PathBuf::from(config_path); let config_path = PathBuf::from(config_path);
@ -77,13 +69,11 @@ impl<P> Controller<P> {
let config_ = Arc::new(RwLock::from(config)); let config_ = Arc::new(RwLock::from(config));
let library = MusicLibrary::init(config_.clone(), uuid)?; let library = MusicLibrary::init(config_.clone(), uuid)?;
let (player_mail, in_thread) = MailMan::<PlayerCmd, PlayerRes>::double();
Ok(Controller { Ok(Controller {
queue: Queue::new(), queue: Queue::default(),
config: config_.clone(), config: config_.clone(),
library, library,
player: P::new(), player: Box::new(P::new()),
}) })
} }
@ -94,27 +84,4 @@ impl<P> Controller<P> {
} }
#[cfg(test)] #[cfg(test)]
mod test_super { mod test_super {}
use std::{thread::sleep, time::Duration};
use super::Controller;
#[test]
fn play_test() {
let mut a = match Controller::start("test-config/config_test.json".to_string()) {
Ok(c) => c,
Err(e) => panic!("{e}"),
};
sleep(Duration::from_millis(500));
}
#[test]
fn test_() {
let c = Controller::start(
"F:\\Dangoware\\Dango Music Player\\dmp-core\\test-config\\config_test.json",
)
.unwrap();
sleep(Duration::from_secs(60));
}
}

View file

@ -1,8 +1,5 @@
use crate::music_storage::library::{MusicLibrary, Song, URI}; use crate::music_storage::library::Song;
use std::{ use std::error::Error;
error::Error,
sync::{Arc, RwLock},
};
use uuid::Uuid; use uuid::Uuid;
use thiserror::Error; use thiserror::Error;
@ -53,7 +50,7 @@ impl From<Song> for QueueItem {
} }
} }
#[derive(Debug)] #[derive(Debug, Default)]
pub struct Queue { pub struct Queue {
pub items: Vec<QueueItem>, pub items: Vec<QueueItem>,
pub played: Vec<QueueItem>, pub played: Vec<QueueItem>,
@ -81,16 +78,6 @@ impl Queue {
); );
} }
pub fn new() -> Self {
//TODO: Make the queue take settings from config/state if applicable
Queue {
items: Vec::new(),
played: Vec::new(),
loop_: false,
shuffle: false,
}
}
pub fn set_items(&mut self, tracks: Vec<QueueItem>) { pub fn set_items(&mut self, tracks: Vec<QueueItem>) {
let mut tracks = tracks; let mut tracks = tracks;
self.items.clear(); self.items.clear();
@ -131,7 +118,7 @@ impl Queue {
let empty = self.items.is_empty(); let empty = self.items.is_empty();
self.items.insert( self.items.insert(
(if empty { 0 } else { 1 }), if empty { 0 } else { 1 },
QueueItem { QueueItem {
item, item,
state: if (self.items.get(1).is_none() state: if (self.items.get(1).is_none()

View file

@ -642,7 +642,7 @@ impl MusicLibrary {
name, name,
uuid, uuid,
library: Vec::new(), library: Vec::new(),
playlists: PlaylistFolder::new(), playlists: PlaylistFolder::default(),
backup_songs: Vec::new(), backup_songs: Vec::new(),
} }
} }

View file

@ -1,3 +1,4 @@
use std::default;
use std::error::Error; use std::error::Error;
use std::{ use std::{
fs::File, fs::File,
@ -26,6 +27,7 @@ pub enum SortOrder {
nest! { nest! {
#[derive(Debug, Clone, Deserialize, Serialize)]* #[derive(Debug, Clone, Deserialize, Serialize)]*
#[derive(Default)]
pub struct PlaylistFolder { pub struct PlaylistFolder {
name: String, name: String,
items: Vec< items: Vec<
@ -37,15 +39,6 @@ nest! {
} }
} }
impl PlaylistFolder {
pub fn new() -> Self {
PlaylistFolder {
name: String::new(),
items: Vec::new(),
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)] #[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Playlist { pub struct Playlist {
uuid: Uuid, uuid: Uuid,
@ -233,7 +226,7 @@ impl Playlist {
#[cfg(target_family = "windows")] #[cfg(target_family = "windows")]
{ {
playlist.title = path playlist.title = path
.split("\\") .split('\\')
.last() .last()
.unwrap_or_default() .unwrap_or_default()
.strip_suffix(".m3u8") .strip_suffix(".m3u8")
@ -339,7 +332,7 @@ impl Default for Playlist {
#[cfg(test)] #[cfg(test)]
mod test_super { mod test_super {
use super::*; use super::*;
use crate::{config::config::tests::read_config_lib, music_storage::playlist}; use crate::config::config::tests::read_config_lib;
#[test] #[test]
fn list_to_m3u8() { fn list_to_m3u8() {
@ -360,7 +353,7 @@ mod test_super {
let playlist = let playlist =
Playlist::from_m3u8(".\\test-config\\playlists\\playlist.m3u8", arc).unwrap(); Playlist::from_m3u8(".\\test-config\\playlists\\playlist.m3u8", arc).unwrap();
playlist.to_file(".\\test-config\\playlists\\playlist"); _ = playlist.to_file(".\\test-config\\playlists\\playlist");
dbg!(playlist) dbg!(playlist)
} }