4 releases (2 breaking)
Uses new Rust 2024
new 0.2.0 | Mar 31, 2025 |
---|---|
0.1.1 | Mar 29, 2025 |
0.1.0 | Mar 24, 2025 |
0.0.1 | Mar 23, 2025 |
#189 in Command-line interface
550 downloads per month
Used in rofis
70KB
2K
SLoC
noargs
noargs
is an imperative command-line argument parser library for Rust with no dependencies, no macros, and no implicit I/O.
Features
- Supports the following argument types:
- Automatically generates help text
- Simple and minimal interface due to its imperative nature (no complex DSL)
Examples
The following code demonstrates the basic usage of noargs
:
fn main() -> noargs::Result<()> {
// Create `noargs::RawArgs` having the result of `std::env::args()`.
let mut args = noargs::raw_args();
// Set metadata for help.
args.metadata_mut().app_name = env!("CARGO_PKG_NAME");
args.metadata_mut().app_description = env!("CARGO_PKG_DESCRIPTION");
// Handle well-known flags.
if noargs::VERSION_FLAG.take(&mut args).is_present() {
println!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"));
return Ok(());
}
if noargs::HELP_FLAG.take(&mut args).is_present() {
args.metadata_mut().help_mode = true;
}
// Handle application specific args.
let foo: usize = noargs::opt("foo").default("1").take(&mut args).parse()?;
let bar: bool = noargs::flag("bar").take(&mut args).is_present();
let baz: Option<String> = noargs::arg("baz").take(&mut args).parse_if_present()?;
// Check unexpected args and build help text if need.
if let Some(help) = args.finish()? {
print!("{help}");
return Ok(());
}
// Do application logic.
Ok(())