odysee-dl

odysee.com channel content downloader
git clone https://git.ea.contact/odysee-dl
Log | Files | Refs | README

commit 88ba14eb3252634d23a293ad372bcc77b01552a7
parent b7512ed10c6da2bd23df1352994f6b09d9e75681
Author: egor-achkasov <eaachkasov@gmail.com>
Date:   Sat,  9 May 2026 06:08:11 +0000

fix argparse bug

Diffstat:
Msrc/bin/cli/main.rs | 10+++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/bin/cli/main.rs b/src/bin/cli/main.rs @@ -59,9 +59,10 @@ fn parse_args() -> Result<Config, ParseArgsErr> { let mut output_dir = std::path::PathBuf::from("."); let mut resume = false; + let mut url: Option<String> = None; let mut i = 1; - while i < args.len() - 1 { + while i < args.len() { match args[i].as_str() { "-h" | "--help" => { println!("{}", HELP); @@ -69,7 +70,7 @@ fn parse_args() -> Result<Config, ParseArgsErr> { } "-d" | "--dir" => { i += 1; - if i >= args.len() - 1 { + if i >= args.len() { return Err(ParseArgsErr::MissingDirValue); } output_dir = std::path::PathBuf::from(&args[i]); @@ -77,12 +78,15 @@ fn parse_args() -> Result<Config, ParseArgsErr> { "-r" | "--resume" => { resume = true; } + arg if !arg.starts_with('-') => { + url = Some(arg.to_string()); + } _ => return Err(ParseArgsErr::UnknownOption(args[i].clone())), } i += 1; } - let url = args.last().unwrap().to_string(); + let url = url.ok_or(ParseArgsErr::MissingUrl)?; Ok(Config { url, output_dir, resume }) }