entrance

Crates.ioentrance
lib.rsentrance
version0.3.0
sourcesrc
created_at2019-06-04 11:40:03.307418
updated_at2020-11-06 07:13:47.475751
descriptionA command line argument parser library which provides type assisted tools
homepage
repositoryhttps://github.com/0ncorhynchus/entrance
max_upload_size
id138866
size27,256
Suguru Kato (0ncorhynchus)

documentation

https://docs.rs/entrance

README

entrance

Crates.io Document CircleCI

Type sytem assisted command line argument parser

entrance provides type assisted tools for parsing command line arguments.

Simple usage

use entrance::{Arguments, Options};
use std::env;
use std::path::PathBuf;

#[derive(Options, PartialEq)]
enum Opts {
    #[entrance(description = "Print help message")]
    #[entrance(short = 'h')]
    #[entrance(informative(entrance::help))]
    Help,

    #[entrance(description = "Print version infomation")]
    #[entrance(informative(entrance::version))]
    Version,

    #[entrance(description = "Use verbose output")]
    #[entrance(short = 'v')]
    Verbose,
}

#[derive(Arguments)]
struct Args {
    #[entrance(description = "The number of lines")]
    num: f64,

    #[entrance(description = "Path to a file")]
    file: PathBuf,
}

type Command = entrance::Command<Opts, Args>;

fn main() {
    let command = Command::new(env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"));
    let (opts, args) = command.parse_or_exit(env::args());

    if opts.contains(&Opts::Verbose) {
        println!("enabled the verbose output");
    }

    println!("1st argument: \"{}\"", args.num);
    println!("2nd argument: \"{}\"", args.file.display());
}

Structs and traits

Command

This struct provides tools for parsing command line arguments.

Before parsing command line arguments, it is necessary to create the instance with the associated function new then, call parse of the instance.

Options

A derive macro is available for this.

Limitation: the derive macro supports only an Enum whose variants don't have any field.

Arguments

A derive macro is available for this.

Limitation: the macro supports only the struct with members implementing FromStr.

Commit count: 147

cargo fmt