| Crates.io | clawless |
| lib.rs | clawless |
| version | 0.4.0 |
| created_at | 2025-06-20 19:33:43.112193+00 |
| updated_at | 2025-12-19 13:48:23.673253+00 |
| description | A framework for building command-line applications |
| homepage | |
| repository | https://github.com/aonyx-ai/clawless.git |
| max_upload_size | |
| id | 1720097 |
| size | 19,355 |
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.
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.
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
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 -- greet runs the greet commandcargo run -- db migrate runs the db::migrate commandcargo run -- db seed runs the db::seed commandLicensed under either of
at your option.
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.