From 53724caedc8d3d3783bb701f615afd3eb8298ebb Mon Sep 17 00:00:00 2001 From: A Farzat Date: Sat, 22 Nov 2025 10:06:02 +0300 Subject: Add an order argument --- src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 50c59e3..ab8e299 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,12 @@ -use clap::Parser; +use clap::{Parser, ValueEnum}; use simple_rss_podcast_downloader::*; +#[derive(ValueEnum, Clone, Debug)] +enum Order { + Newest, + Oldest, +} + #[derive(Parser, Debug)] #[command(author, version, about)] struct Cli { @@ -8,18 +14,21 @@ struct Cli { #[arg(default_value = ".")] output_dir: String, #[arg(short, long)] - numbered: bool, + numbered: bool, // Whether to prefix the episode number + #[arg(long, value_enum, default_value_t = Order::Oldest)] + order: Order, // Order of download and numbering } fn main() -> Result<(), Box> { let args = Cli::parse(); - println!("Feed RSS feed from: {}", args.feed_url); + println!("Fetching RSS feed from: {}", args.feed_url); let xml = fetch_feed(&args.feed_url)?; let channel = parse_feed(&xml)?; let pad = channel.items().len().to_string().len(); - for (i, url) in get_audio_urls(&channel) { + let newest_first = matches!(args.order, Order::Newest); + for (i, url) in get_audio_urls(&channel, newest_first) { let prefix = if args.numbered { Some(format!("{:0width$}", i, width = pad)) } else { -- cgit v1.2.3-70-g09d2