unsafe-review-cli 0.3.6

CLI adapter for unsafe-review
Documentation
use super::*;

pub(super) fn apply_check_arg(
    args: &[String],
    idx: usize,
    options: &mut CheckOptions,
) -> Result<usize, String> {
    try_apply_check_arg(args, idx, options)?
        .ok_or_else(|| format!("unknown argument `{}`", args[idx]))
}

pub(super) fn try_apply_check_arg(
    args: &[String],
    idx: usize,
    options: &mut CheckOptions,
) -> Result<Option<usize>, String> {
    match args[idx].as_str() {
        "--root" => {
            options.root = PathBuf::from(value(args, idx + 1, "--root")?);
            Ok(Some(2))
        }
        arg if arg.starts_with("--root=") => {
            options.root = PathBuf::from(inline_value(arg, "--root")?);
            Ok(Some(1))
        }
        "--base" => {
            options.base = Some(value(args, idx + 1, "--base")?.to_string());
            Ok(Some(2))
        }
        arg if arg.starts_with("--base=") => {
            options.base = Some(inline_value(arg, "--base")?.to_string());
            Ok(Some(1))
        }
        "--diff" => {
            options.diff = Some(parse_diff_input(value(args, idx + 1, "--diff")?));
            Ok(Some(2))
        }
        arg if arg.starts_with("--diff=") => {
            options.diff = Some(parse_diff_input(inline_value(arg, "--diff")?));
            Ok(Some(1))
        }
        "--format" => {
            options.format = parse_format(value(args, idx + 1, "--format")?)?;
            Ok(Some(2))
        }
        arg if arg.starts_with("--format=") => {
            options.format = parse_format(inline_value(arg, "--format")?)?;
            Ok(Some(1))
        }
        "--policy" => {
            options.policy = parse_policy(value(args, idx + 1, "--policy")?)?;
            Ok(Some(2))
        }
        arg if arg.starts_with("--policy=") => {
            options.policy = parse_policy(inline_value(arg, "--policy")?)?;
            Ok(Some(1))
        }
        "--json" => {
            options.format = Format::Json;
            Ok(Some(1))
        }
        "--markdown" => {
            options.format = Format::Markdown;
            Ok(Some(1))
        }
        "--out" => {
            options.out = Some(PathBuf::from(value(args, idx + 1, "--out")?));
            Ok(Some(2))
        }
        arg if arg.starts_with("--out=") => {
            options.out = Some(PathBuf::from(inline_value(arg, "--out")?));
            Ok(Some(1))
        }
        "--max-cards" => {
            options.max_cards = Some(parse_max_cards_arg(args, idx + 1, "--max-cards")?);
            Ok(Some(2))
        }
        arg if arg.starts_with("--max-cards=") => {
            options.max_cards = Some(parse_max_cards_inline(arg, "--max-cards")?);
            Ok(Some(1))
        }
        _ => Ok(None),
    }
}

fn parse_max_cards_arg(args: &[String], idx: usize, flag: &str) -> Result<usize, String> {
    parse_max_cards(value(args, idx, flag)?)
}

fn parse_max_cards_inline(arg: &str, flag: &str) -> Result<usize, String> {
    parse_max_cards(inline_value(arg, flag)?)
}