23 releases
| 0.3.8 | Jun 30, 2025 |
|---|---|
| 0.3.5 | May 21, 2025 |
| 0.2.5 | Jan 13, 2025 |
| 0.2.4 | Oct 15, 2024 |
#232 in Command-line interface
2,283 downloads per month
Used in 62 crates
(47 directly)
28KB
361 lines
Clientele.rs
Clientele makes it easy to write superb command-line utilities in Rust that follow consistent best practices on all target platforms including Linux, macOS, and Windows. It packages and re-exports clap, camino, dotenvy, wild, argfile, and getenv into a single easy dependency.
✨ Features
- Showcases how to structure a CLI program in Rust (see the examples).
- Loads environment variables from
.envfiles (using the dotenvy crate). - Provides convenience getters for common variables (using the getenv crate).
- Expands wildcard arguments (globs) on Windows (using the wild crate).
- Expands @argfiles similarly to
javacor Python (using the argfile crate). - Defines a standard set of essential CLI options (using the clap crate).
- Provides the
Utf8PathandUtf8PathBuftypes (using the camino crate). - Recommends use of the
sysexits.h(3)exit codes (see known-errors). - Supports opting out of any feature using comprehensive feature flags.
- Adheres to the Rust API Guidelines in its naming conventions.
- 100% free and unencumbered public domain software.
🛠️ Prerequisites
- Rust 1.81+
⬇️ Installation
Installation via Cargo
cargo add clientele
Installation in Cargo.toml (with all features enabled)
[dependencies]
clientele = "0.3"
Installation in Cargo.toml (with only specific features enabled)
[dependencies]
clientele = { version = "0.3", default-features = false, features = ["dotenv"] }
👉 Examples
See examples/skeleton/main.rs for a complete example.
Importing the Library
use clientele::*;
Running the Example
cargo run --example skeleton
📚 Reference
Options
StandardOptions
Options:
--color <COLOR> Set the color output mode [default: auto] [possible values: auto, always, never]
-d, --debug Enable debugging output
--license Show license information
-v, --verbose... Enable verbose output (may be repeated for more verbosity)
-V, --version Print version information
-h, --help Print help
Integrations
| Crate (Feature) | Version | Usage | Summary |
|---|---|---|---|
argfile ("argfile") |
0.2 | Enhances args_os() to expand @argfiles |
|
camino ("camino") |
1.1 | Prerequisite for paths::* |
|
clap ("clap") |
4.5 | Provides StandardOptions |
|
dotenvy ("dotenvy") |
0.15 | Provides dotenv() |
|
getenv ("getenv") |
0.1 | Provides envs::*, prerequisite for paths::* |
|
tracing-core ("tracing") |
0.1 | Implements Into<tracing_core::Level> for StandardOptions |
|
wild ("wild") |
2 | Enhances args_os() to support globs on Windows |
|
👨💻 Development
git clone https://github.com/dryrust/clientele.rs.git
Dependencies
~0.9–16MB
~162K SLoC