(flag: &str, spec: &str, port: &str)
| 424 | } |
| 425 | |
| 426 | fn parse_port(flag: &str, spec: &str, port: &str) -> Result<u32> { |
| 427 | let port = port.trim(); |
| 428 | if port.is_empty() { |
| 429 | return Err(miette!("{flag} has an empty port segment in '{spec}'")); |
| 430 | } |
| 431 | let parsed = port.parse::<u32>().map_err(|_| { |
| 432 | miette!("{flag} port segment must be a base-10 integer, got '{port}' in '{spec}'") |
| 433 | })?; |
| 434 | if parsed == 0 || parsed > 65535 { |
| 435 | return Err(miette!( |
| 436 | "{flag} port must be in the range 1-65535, got '{parsed}' in '{spec}'" |
| 437 | )); |
| 438 | } |
| 439 | Ok(parsed) |
| 440 | } |
| 441 | |
| 442 | fn dedup_strings(values: &[String]) -> Vec<String> { |
| 443 | let mut deduped = Vec::new(); |
no test coverage detected