diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 17 |
1 files changed, 13 insertions, 4 deletions
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<dyn std::error::Error>> { 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 { |
