Thanks to visit codestin.com
Credit goes to lib.rs

#executable #lookup #which

which_problem

Diganose your executable lookup problems with this rust library

3 releases

0.1.2 Nov 1, 2025
0.1.1 Oct 31, 2025
0.1.0 Feb 2, 2023

#503 in Filesystem

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

74 downloads per month
Used in 2 crates

MIT license

31KB
720 lines

Which Problem (rust)

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

Cli

Use the CLI to dianose problems:

$ cargo install cargo-whichp
$ 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

$ cargo add which_problem
use std::process::Command;
use which_problem::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();

Dependencies

~2.5MB
~43K SLoC