fn cli()

in src/main.rs [21:138]


fn cli() -> Command {
    Command::new("dump_syms")
    .version(crate_version!())
    .author(crate_authors!("\n"))
    .about("Dump debug symbols to breakpad symbols")
    .arg(
        Arg::new("filenames")
            .help("Files to dump (.dll, .exe, .pdb, .pd_, .so, .dbg)")
            .required(true)
            .num_args(1..)
    )
    .arg(
        Arg::new("output")
            .help("Output file or - for stdout")
            .short('o')
            .long("output")
    )
    .arg(
        Arg::new("store")
            .help("Store output file as FILENAME.pdb/DEBUG_ID/FILENAME.sym in the given directory")
            .short('s')
            .long("store")
    )
    .arg(
        Arg::new("debug_id")
            .help("Get the pdb file passed as argument from the cache or from symbol server using the debug id")
            .long("debug-id")
    )
    .arg(
        Arg::new("code_id")
            .help("Get the dll/exe file passed as argument from the cache or from symbol server using the code id")
            .long("code-id")
    )
    .arg(
        Arg::new("symbol_server")
            .help("Symbol Server configuration\n(e.g. \"SRV*c:\\symcache\\*https://symbols.mozilla.org/\")\nIt can be in file $HOME/.dump_syms/config too.")
            .long("symbol-server")
    )
    .arg(
        Arg::new("check_cfi")
            .help("Fail if there are no CFI data")
            .long("check-cfi")
            .action(ArgAction::SetTrue)
    )
    .arg(
        Arg::new("verbose")
            .help("Set the level of verbosity (off, error (default), warn, info, debug, trace)")
            .long("verbose")
            .default_value("error")
    )
    .arg(
        Arg::new("arch")
            .help("Set the architecture to select in fat binaries")
            .short('a')
            .long("arch")
            .default_value(common::get_compile_time_arch())
    )
    .arg(
        Arg::new("type")
            .help("Ignored, listed for compatibility only")
            .short('t')
            .long("type")
            .default_value("")
    ).arg(
        Arg::new("list_arch")
            .help("List the architectures present in the fat binaries")
            .long("list-arch")
            .action(ArgAction::SetTrue)
    )
    .arg(
        Arg::new("num_jobs")
            .help("Number of jobs")
            .short('j')
            .value_name("NUMBER")
            .default_value("")
    )
    .arg(
        Arg::new("mapping_var")
            .help("A pair var=value such as rev=123abcd")
            .long("mapping-var")
            .action(ArgAction::Append)
    )
    .arg(
        Arg::new("mapping_src")
            .help("Regex to match a path with capturing groups")
            .long("mapping-src")
            .action(ArgAction::Append)
    )
    .arg(
        Arg::new("mapping_dest")
            .help(r#"A replacement string using groups, variables (set with --mapping-var), special variable like DIGEST or digest.
For example with --mapping-var="rev=123abc" --mapping-src="/foo/bar/(.*)" --mapping-dest="https://my.source.org/{rev}/{digest}/{1}" a path like "/foo/bar/myfile.cpp" will be transformed into "https://my.source.org/123abc/sha512_of_myfile.cpp/myfile.cpp"
"#)
            .long("mapping-dest")
            .action(ArgAction::Append)
    )
    .arg(
        Arg::new("mapping_file")
            .help("A json file containing mapping")
            .long("mapping-file")
    )
    .arg(
        Arg::new("inlines")
            .help("Whether to emit INLINE and INLINE_ORIGIN directives")
            .long("inlines")
            .action(ArgAction::SetTrue)
    )
    .arg(Arg::new("extra_info")
             .help("Add an INFO line with the value passed to this argument")
             .long("extra-info")
             .action(ArgAction::Append)
    )
    .arg(Arg::new("no-generator")
             .help("Do not emit an INFO GENERATOR line holding the name and version of the dump_syms tool")
             .long("no-generator")
             .action(ArgAction::SetTrue)
    )
}