]> git.r.bdr.sh - rbdr/lyricli/blobdiff - src/sources/mod.rs
Add rust implementation test
[rbdr/lyricli] / src / sources / mod.rs
diff --git a/src/sources/mod.rs b/src/sources/mod.rs
new file mode 100644 (file)
index 0000000..fb7af8f
--- /dev/null
@@ -0,0 +1,82 @@
+use std::io::Result;
+
+// #[cfg(target_os = "macos")]
+// mod applie_music;
+// #[cfg(target_os = "macos")]
+// mod spotify;
+// #[cfg(not(target_os = "macos"))]
+// mod rhythmbox;
+// #[cfg(not(target_os = "macos"))]
+// mod quod_libe;
+// #[cfg(not(target_os = "macos"))]
+// mod strawberry;
+// #[cfg(not(target_os = "macos"))]
+// mod tauon;
+
+// #[cfg(target_os = "macos")]
+// use apple_music::AppleMusic;
+// #[cfg(target_os = "macos")]
+// use spotify::Spotify;
+
+// #[cfg(not(target_os = "macos"))]
+// use rhythmbox::Rhythmbox;
+// #[cfg(not(target_os = "macos"))]
+// use quod_libet::QuodLibet;
+// #[cfg(not(target_os = "macos"))]
+// use strawberry::Strawberry;
+// #[cfg(not(target_os = "macos"))]
+// use tauon::Tauon;
+
+use crate::Track;
+
+pub trait LyricsSource {
+    fn name(&self) -> String;
+
+    fn current_track(&self) -> Option<Track>;
+
+    fn disable(&self) -> Result<()>;
+    fn enable(&self) -> Result<()>;
+    fn reset(&self) -> Result<()>;
+}
+
+pub fn list() -> Result<()> {
+    Ok(())
+}
+
+pub fn enable(source_name: String) -> Result<()> {
+    println!("Enabling {}", source_name);
+    Ok(())
+}
+
+pub fn disable(source_name: String) -> Result<()> {
+    println!("Disabling {}", source_name);
+    Ok(())
+}
+
+pub fn reset(source_name: String) -> Result<()> {
+    println!("Reset {}", source_name);
+    Ok(())
+}
+
+pub fn get_track() -> Option<Track> {
+    return None
+}
+
+pub fn available_sources() -> Vec<Box<dyn LyricsSource>> {
+    let mut sources: Vec<Box<dyn LyricsSource>> = Vec::new();
+    #[cfg(target_os = "macos")]
+    {
+        // sources.push(Box::new(AppleMusic::new()));
+        // sources.push(Box::new(Spotify::new()));
+    }
+
+    #[cfg(not(target_os = "macos"))]
+    {
+        // sources.push(Box::new(Rhythmbox::new()));
+        // sources.push(Box::new(QuodLibet::new()));
+        // sources.push(Box::new(Strawberry::new()));
+        // sources.push(Box::new(Tauon::new()));
+    }
+
+    sources
+}