Skip to content

Clientele makes it easy to write superb command-line utilities in Rust that follow consistent best practices on Linux, macOS, and Windows.

License

Notifications You must be signed in to change notification settings

dryrust/clientele.rs

Repository files navigation

Clientele.rs

License Compatibility Package Documentation

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 .env files (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 javac or Python (using the argfile crate).
  • Defines a standard set of essential CLI options (using the clap crate).
  • Provides the Utf8Path and Utf8PathBuf types (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

⬇️ 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

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 argfile Enhances args_os() to expand @argfiles
camino  ("camino") 1.1 camino Prerequisite for paths::*
clap  ("clap") 4.5 clap Provides StandardOptions
dotenvy  ("dotenvy") 0.15 dotenvy Provides dotenv()
getenv  ("getenv") 0.1 getenv Provides envs::*, prerequisite for paths::*
tracing-core  ("tracing") 0.1 tracing-core Implements Into<tracing_core::Level> for StandardOptions
wild  ("wild") 2 wild Enhances args_os() to support globs on Windows
 

👨‍💻 Development

git clone https://github.com/dryrust/clientele.rs.git

Share on X Share on Reddit Share on Hacker News Share on Facebook Share on LinkedIn

About

Clientele makes it easy to write superb command-line utilities in Rust that follow consistent best practices on Linux, macOS, and Windows.

Topics

Resources

License

Security policy

Stars

Watchers

Forks