Kuberwastaken/claurst · error

Unknown option

Error message

Unknown option: {}

What it means

The catch-all arm of run_upgrade's match: any argument that is not one of the recognized flags (`-h`/`--help`, `-v`/`--version`, `--force`/`-f`) is rejected. It fires on typos (`--forc`), on unsupported long/short forms, and on stray positional arguments — the upgrade command takes no positional parameters, so any unrecognized token is invalid input. A generic validation guard in the CLI arg parser, raised before any network or filesystem work begins.

Solutions

  1. Check spelling against `claurst upgrade --help`
  2. Non-flag arguments are treated as versions; prefix versions are rejected, so pass a plain version like 1.2.3
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src-rust/crates/cli/src/upgrade.rs:36 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Kuberwastaken/claurst@b0637c97ec (2026-09-10). Data as JSON: /api/errors/1d0b23d46775ef03. Report an issue: GitHub.

Appendix: source

Thrown at src-rust/crates/cli/src/upgrade.rs:36

pub async fn run_upgrade(args: &[String]) -> Result<()> {
    // -------- arg parsing --------
    let mut requested_version: Option<String> = None;
    let mut force = false;
    let mut iter = args.iter();
    while let Some(arg) = iter.next() {
        match arg.as_str() {
            "-h" | "--help" => {
                print_help();
                return Ok(());
            }
            "-v" | "--version" => {
                requested_version = iter.next().cloned();
                if requested_version.is_none() {
                    bail!("--version requires an argument");
                }
            }
            "--force" | "-f" => force = true,
            unknown => bail!("Unknown option: {}", unknown),
        }
    }

    let current_version = env!("CARGO_PKG_VERSION").to_string();
    println!("Current version: {}", current_version);

    // -------- detect target --------
    let target = detect_target()?;
    println!("Detected target: {}", target);

    // -------- resolve target version --------
    let target_version = if let Some(v) = requested_version {
        v.trim_start_matches('v').to_string()
    } else {
        fetch_latest_version().await?
    };
    println!("Target version:  {}", target_version);

View on GitHub (pinned to b0637c97ec)