commit 88ba14eb3252634d23a293ad372bcc77b01552a7
parent b7512ed10c6da2bd23df1352994f6b09d9e75681
Author: egor-achkasov <eaachkasov@gmail.com>
Date: Sat, 9 May 2026 06:08:11 +0000
fix argparse bug
Diffstat:
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 })
}