5 releases (breaking)
Uses new Rust 2024
| 0.5.0 | Feb 13, 2026 |
|---|---|
| 0.4.0 | Dec 19, 2025 |
| 0.3.0 | Nov 21, 2025 |
| 0.2.0 | Jul 11, 2025 |
| 0.1.0 | Jun 20, 2025 |
#137 in Command-line interface
2,478 downloads per month
Used in 3 crates
23KB
266 lines
🦦 Clawless
clawless is a framework for building command-line applications with Rust. Its
goal is to provide high-level building blocks and well-designed conventions so
that users can focus on their applications.
The library exports a few macros that create a command-line application, parse arguments, and then call user-defined functions.
Project Status
Clawless is in a very early prototyping phase and not considered ready for production use. Follow the project and check out the open issues to understand the crate's current limitations.
Usage
First of all, generate a new binary crate using cargo new --bin <name>. Inside
the crate, open src/main.rs and replace the generated contents with the
following snippet:
mod commands;
clawless::main!();
Next, create src/commands.rs (or src/commands/mod.rs) to set up your
commands module:
clawless::commands!();
You can now start creating commands for your application. Commands should be
defined in modules under the commands module. For example, create
src/commands/greet.rs:
use clawless::prelude::*;
#[derive(Debug, Args)]
pub struct GreetArgs {
#[arg(short, long)]
name: String,
}
#[command]
pub async fn greet(args: GreetArgs, context: Context) -> CommandResult {
println!("Hello, {}!", args.name);
Ok(())
}
Don't forget to declare the module in src/commands.rs:
mod greet;
clawless::commands!();
You can execute the command by calling your command-line application:
cargo run -- greet --name World
Organizing Commands
For larger applications, you can organize commands into nested modules. The module hierarchy naturally maps to subcommand groups:
src/
├── main.rs
└── commands/
├── mod.rs
├── greet.rs
└── db/
├── mod.rs
├── migrate.rs
└── seed.rs
With this structure:
cargo run -- greetruns thegreetcommandcargo run -- db migrateruns thedb::migratecommandcargo run -- db seedruns thedb::seedcommand
License
Licensed under either of
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~4–7.5MB
~119K SLoC