#command-line-interface #cargo #line #command #clap-parser #latest-version #cli

app cargo-cli

Create a command line interface binary with some common dependencies ((clap || docopt) and error_chain)

3 releases (1 stable)

Uses old Rust 2015

1.0.0 Aug 25, 2018
0.1.1 Mar 29, 2018
0.1.0 Jun 30, 2017

#2572 in Parser implementations

MIT/Apache

51KB
1K SLoC

cargo-cli

Create a command line interface binary with some common dependencies ((clap || docopt) and error_chain)

Installation

cargo install cargo-cli

Usage

In general, this is extension is used in the same manner as you would use cargo new --bin. Most of the command line arguments supported by cargo new are supported by cargo cli and are actually passed through to cargo new.

In addition, cargo cli supports the following options:

  • arg_parser: Specify the argument parser to use in the generated output. [default: clap] [values: clap, docopt]
  • license: Specify licensing to include in the generated output. [default: both] [values: both, mit, apache, none]
  • no-readme: Turn off README.md generation.
  • no-latest: Turn off the crates.io query for the latest version (use defaults).
cargo-cli 0.1.0

USAGE:
    cargo-cli cli [FLAGS] [OPTIONS] <path>

FLAGS:
        --frozen       Require Cargo.lock and cache are up to date
    -h, --help         Prints help information
        --locked       Require Cargo.lock is up to date
        --no-latest    Turn off the crates.io query for the latest version (use defaults).
        --no-readme    Turn off README.md generation.
    -q, --quiet        No output printed to stdout
    -v                 Use verbose output (-vv very verbose/build.rs output)

OPTIONS:
    -a, --arg_parser <PARSER>    Specify the argument parser to use in the generated output. [default: clap]  [values: clap, docopt]
        --color <WHEN>           Coloring [default: auto]  [values: auto, always, never]
        --license <TYPE>         Specify licensing to include in the generated output. [default: both]  [values: both, mit, apache, none]
        --name <NAME>            Set the resulting package name, defaults to the value of <path>.
        --vcs <VCS>              Initialize a new repository for the given version control system
                                 or do not initialize any version control at all, overriding a
                                 global configuration. [default: git]  [values: git, hg, pijul, fossil, none]

ARGS:
    <path>

Examples

With clap

cargo cli <path>

With docopt

cargo cli -a docopt <path>

No licenses or README.md

cargo cli --license none --no-readme <path>

With some cargo new arguments

cargo cli --vcs pijul -vv -a docopt --name flambe <path>

CLI Layout

Default

.
├── Cargo.toml
├── LICENSE-APACHE
├── LICENSE-MIT
├── README.md
└── src
    ├── error.rs
    ├── main.rs
    └── run.rs

No Licenses or README.md

.
├── Cargo.toml
└── src
    ├── error.rs
    ├── main.rs
    └── run.rs

Dependencies

~13–23MB
~362K SLoC