22 releases (6 breaking)

0.6.4 Sep 30, 2023
0.5.0 Sep 26, 2023

#16 in #cli-parser


Used in clier_cli

MIT license

41KB
972 lines

Clier

Command Line Argument Parser for Rust

Clier is a command line argument parser and command framework for rust.

Parser

To start a new cli projects run:

$ cargo new demo
$ cargo add clier

Then define your CLI in main.rs:

use clier::Argv;
use clier::Clier;

fn main() {
  let args: Argv = Clier::parse().args;
  println!("{:#?}", args);
}

And try it out:


$ cargo run -- command subcommand --test=value --no-production --help --try-me=false
Argv {
    commands: [
        "command",
        "subcommand",
    ],
    flags: {
        "test": "value",
        "production": "false",
        "help": "true",
        "try-me": "false",
    },
}

Framework

use clier::builder::{CmdArgs, RCommand};
use clier::error;
use clier::hooks::use_flags;
use clier::run::{ExitCode, Meta, Runnable};
use clier::Clier;

fn first_command_handler(args: CmdArgs) -> i32 {
  let flags = use_flags(&args);
  println!("{:?}", flags);
  0
}
fn main() -> Result<ExitCode, error::Error> {
  let clier = Clier::parse();

  let meta = Meta::new("clier-example-framework", "This is the description", "1.0.0");
  let first_command = RCommand::new("first-command", "Command description", first_command_handler)
    .usage("test")
    .flag("tes", None, "testing")
    .subcommand("name", "descriptin", None, |_| {
      /* Code goes here */
      0 /* <- Exit code */
    })
    .subcommand("andra", "descriptin", None, |_| {
      /* Code goes here */
      0
    });

  clier.meta(&meta).command(first_command).run()
}

Dependencies

~1–9MB
~72K SLoC