From b4b30d1fc0db51b6babd977e408313e57d7f47bd Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Mon, 7 Aug 2023 09:32:00 +0100 Subject: [PATCH] Add cli option to select subscriptions file --- src/file/read.rs | 3 +++ src/history/add.rs | 2 ++ src/history/find.rs | 3 +++ src/lib.rs | 14 +++++++------- src/main.rs | 2 -- src/params/mod.rs | 5 +++++ 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/file/read.rs b/src/file/read.rs index 1bd98e8..93f3fae 100644 --- a/src/file/read.rs +++ b/src/file/read.rs @@ -33,6 +33,7 @@ mod tests { let file_env = FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: file_name.to_string(), }); //when @@ -55,6 +56,7 @@ mod tests { let file_env = FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: file_name.to_string(), }); //when @@ -77,6 +79,7 @@ mod tests { let file_env = FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: file_name.to_string(), }); //when diff --git a/src/history/add.rs b/src/history/add.rs index 7ea8036..b22c4bd 100644 --- a/src/history/add.rs +++ b/src/history/add.rs @@ -42,6 +42,7 @@ mod tests { &FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: "subscriptions.txt".to_string(), }), )?; @@ -76,6 +77,7 @@ mod tests { &FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: "subscriptions.txt".to_string(), }), )?; diff --git a/src/history/find.rs b/src/history/find.rs index 148a623..1397b48 100644 --- a/src/history/find.rs +++ b/src/history/find.rs @@ -41,6 +41,7 @@ mod test { &FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: "subscriptions.txt".to_string(), }), )?; @@ -76,6 +77,7 @@ mod test { &FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: "subscriptions.txt".to_string(), }), )?; @@ -111,6 +113,7 @@ mod test { &FileEnv::create(&Args { downloads: dir.path().to_string_lossy().to_string(), history: "downloaded.txt".to_string(), + subscriptions: "subscriptions.txt".to_string(), }), )?; diff --git a/src/lib.rs b/src/lib.rs index 2095452..c28d6c0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -20,8 +20,8 @@ pub struct Env { pub file: FileEnv, } -pub fn run(subscriptions: &str, site: &str, a: &Args, e: Env) -> Result<()> { - for channel_name in file::read::lines_from(subscriptions, &e.file)? { +pub fn run(site: &str, a: &Args, e: Env) -> Result<()> { + for channel_name in file::read::lines_from(&a.subscriptions, &e.file)? { println!("Channel: {}", channel_name); let feed_url = feed::find(site, &channel_name, &e.network)?; for entry in feed::get(&feed_url, &e.network)?.entries() { @@ -62,6 +62,8 @@ mod tests { let subs_file_name = "subs"; let subs_dir = create_text_file(subs_file_name, "@channel1\nignore me\n@channel2".as_bytes())?; + let subs_file_name = format!("{}/{}", subs_dir.path().to_string_lossy(), subs_file_name); + // one item from each channel is already listed in the downloads.txt file let history_file_name = "history"; let history_dir = create_text_file(history_file_name, "c1-f2\nc2-f3".as_bytes())?; @@ -74,6 +76,7 @@ mod tests { let args = Args { downloads: subs_dir.path().to_string_lossy().to_string(), history: history_file_name.clone(), + subscriptions: subs_file_name.clone(), }; let env = Env { network: NetworkEnv { @@ -95,10 +98,7 @@ mod tests { }, file: FileEnv { open: mock_file_open(HashMap::from([ - ( - subs_file_name.to_string(), - format!("{}/{}", subs_dir.path().to_string_lossy(), subs_file_name), - ), + (subs_file_name.to_string(), subs_file_name), (history_file_name.to_string(), history_file_name), ])), append_line: mock_file_append_line(), @@ -106,7 +106,7 @@ mod tests { }; //when - run(subs_file_name, site, &args, env)?; + run(site, &args, env)?; //then drop(subs_dir); drop(history_dir); diff --git a/src/main.rs b/src/main.rs index 4fcb4d8..324db00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,13 +6,11 @@ use podal::prelude::*; fn main() -> Result<()> { println!("Podal"); - let subscriptions = "subscriptions.txt"; let site = "https://www.youtube.com/"; let args = Args::parse(); podal::run( - subscriptions, site, &args, podal::Env { diff --git a/src/params/mod.rs b/src/params/mod.rs index 10c3199..67f80d2 100644 --- a/src/params/mod.rs +++ b/src/params/mod.rs @@ -12,4 +12,9 @@ pub struct Args { /// Defaults to "downloaded.txt" located in the downloads directory. #[arg(long, default_value = "downloaded.txt")] pub history: String, + + /// The name of the subscriptions file. + /// Defaults to "subscriptions.txt" located in the downloads directory. + #[arg(long, default_value = "subscriptions.txt")] + pub subscriptions: String, }