Which Problem (rust)

Tools to help you find problems when looking up executable files.

Cli

Use the CLI to dianose problems:

console $ cargo install cargo-whichp

```console $ cargo whichp bundle

Program "bundle" found at "/Users/rschneeman/.gem/ruby/3.1.3/bin/bundle"

Warning: Executables with the same name found on the PATH:

[OK] "/Users/rschneeman/.gem/ruby/3.1.3/bin/bundle" - [OK] "/Users/rschneeman/.rubies/ruby-3.1.3/bin/bundle" - [OK] "/usr/local/bin/bundle" - [OK] "/usr/local/bin/bundle" - [OK] "/usr/bin/bundle" Help: Ensure the one you want comes first and is [OK] Explanation: [OK] - File found matching program name with executable permissions. Valid executable.

Info: These executables have the closest spelling to "bundle" but did not match: "uname", "bundler", "uuname"

Info: The following directories on PATH were searched (top to bottom):

[OK ] "/Users/rschneeman/.gem/ruby/3.1.3/bin" - [MISSING] "/Users/rschneeman/.rubies/ruby-3.1.3/lib/ruby/gems/3.1.0/bin" - [OK ] "/Users/rschneeman/.rubies/ruby-3.1.3/bin" - [OK ] "/Users/rschneeman/.cargo/bin" - [OK ] "/usr/local/bin" - [OK ] "/usr/local/sbin" - [OK ] "/usr/local/bin" - [OK ] "/System/Cryptexes/App/usr/bin" - [OK ] "/usr/bin" - [OK ] "/bin" - [OK ] "/usr/sbin" - [OK ] "/sbin" - [OK ] "/Users/rschneeman/.cargo/bin" Explanation: [OK ] - Path part is a valid, non-empty, directory [MISSING] - Path part does not exist exist on disk, no such directory ```

Rust library

console $ cargo add which_problem

```rust,norun use std::process::Command; use whichproblem::Which;

let program = "bundle"; Command::new(program) .arg("install") .output() .map_err(|error| { eprintln!("Executing command '{program}' failed. Error: {error}");

    match Which::new(program).diagnose() {
        Ok(details) => println!("Diagnostic info: {details}"),
        Err(error) => println!("Warning: Internal which_problem error: {error}"),
    }
    error
})
.unwrap();

```