From db713f8e215b2c349e4eaf0fa4791b876125148b Mon Sep 17 00:00:00 2001 From: A Farzat Date: Fri, 21 Nov 2025 19:53:35 +0300 Subject: Use clap for argument parsing --- src/lib.rs | 19 ------------------- src/main.rs | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 12a27e6..78ddfe4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,26 +1,7 @@ use rss::Channel; -use std::env; use std::fs::File; use std::path::PathBuf; -/// Parse CLI arguments and return (feed_url, output_dir) -pub fn parse_args() -> (String, String) { - let mut args: Vec = env::args().collect(); - if args.len() < 2 { - eprintln!("Usage: {} [OUTPUT_DIR]", args[0]); - std::process::exit(1); - } - - let feed_url = args.remove(1); - let output_dir = if args.len() > 1 { - args.remove(1) - } else { - String::from(".") - }; - - (feed_url, output_dir) -} - /// Fetch RSS feed content from a URL pub fn fetch_feed(url: &str) -> Result { reqwest::blocking::get(url)?.text() diff --git a/src/main.rs b/src/main.rs index 7e28a52..a2ac775 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,15 +1,26 @@ +use clap::Parser; use simple_rss_podcast_downloader::*; +#[derive(Parser, Debug)] +#[command(author, version, about)] +struct Cli { + feed_url: String, + #[arg(default_value = ".")] + output_dir: String, + #[arg(short, long)] + numbered: bool, +} + fn main() -> Result<(), Box> { - let (feed_url, output_dir) = parse_args(); + let args = Cli::parse(); - println!("Feed RSS feed from: {}", feed_url); + println!("Feed RSS feed from: {}", args.feed_url); - let xml = fetch_feed(&feed_url)?; + let xml = fetch_feed(&args.feed_url)?; let channel = parse_feed(&xml)?; for url in get_audio_urls(&channel) { println!("Downloading file: {}", url); - download_file(url, &output_dir)?; + download_file(url, &args.output_dir)?; } Ok(()) -- cgit v1.2.3-70-g09d2