CarLI is a framework for creating single-command and multi-command CLI applications in Rust

Overview

CarLI

A library for rapid command line tool development.

CarLI is a framework for creating single-command and multi-command CLI applications in Rust. The framework provides error and IO types better suited for the command line environment, especially in cases where unit testing is needed. Opinionated traits are also provided to enforce a consistent way of structuring the application and its subcommands.

See command::Main for a complete example.

Requirements

  • Rust 1.57+

Examples

Documentation

Please see docs.rs.

You might also like...
A command line tool for easily generating multiple versions of a configuration file from a single template

MultiConf A command line tool for easily generating multiple versions of a configuration file from a single template. Why? I'm a big fan of the i3 win

🧰 Download pre-built binaries of all your favourite tools with a single command
🧰 Download pre-built binaries of all your favourite tools with a single command

tool-sync tool-sync is a CLI tool that solves one problem: 📥 Download pre-built binaries of all your favourite tools with a single command. tool-sync

Upkeep your websites and web applications with ease from the comfort of the command line.
Upkeep your websites and web applications with ease from the comfort of the command line.

Upkeep Upkeep your websites and web applications with ease from the comfort of the command line. Explore the docs » View Demo · Report Bug · Request F

argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper with a

argmax argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper w

A dead simple functional testing tool for command line applications

Pharaoh : build that test pyramid! What it is Pharaoh is a dead simple, no permission needed, functional test runner for command line applications, wr

Concurrent and multi-stage data ingestion and data processing with Rust+Tokio

TokioSky Build concurrent and multi-stage data ingestion and data processing pipelines with Rust+Tokio. TokioSky allows developers to consume data eff

A Rust-based shell script to create a folder structure to use for a single class every semester. Mostly an excuse to use Rust.

A Rust Course Folder Shell Script PROJECT IN PROGRESS (Spring 2022) When completed, script will create a folder structure of the following schema: [ro

Replace an app's icon from a png with a single terminal script. Made with Rust

Replace macOS App Icon Replace an app's icon from a png with a single terminal CLI. Made with Rust

A Rust synchronisation primitive for "Multiplexed Concurrent Single-Threaded Read" access

exit-left verb; 1. To exit or disappear in a quiet, non-dramatic fashion, making way for more interesting events. 2. (imperative) Leave the scene, and

Comments
  • Support try from `anyhow::Error` to `carli::error::Error`.

    Support try from `anyhow::Error` to `carli::error::Error`.

    The following checks have been done.

    • [X] I could not find another enhancement request that covers what I need.
    • [X] This request does not cover existing functionality.

    What existing feature needs to be enhanced?

    The ability to convert into carli::error::Error.

    What problem is being solved?

    Supporting ? operator conversions from anyhow::Error to carli::error::Error.

    How would you like to see this problem solved?

    Implement From<anyhow::Error> for Error.

    Some additional context.

    Enhancement 
    opened by kherge 1
  • Implement `From<T> for Error` for all `std::error::Error` implementations.

    Implement `From for Error` for all `std::error::Error` implementations.

    The following checks have been done.

    • [X] I could not find another enhancement request that covers what I need.
    • [X] This request does not cover existing functionality.

    What existing feature needs to be enhanced?

    The ability to convert errors to carli::error::Error.

    What problem is being solved?

    The lack of support for all std::error::Error implementations.

    How would you like to see this problem solved?

    Replacing existing From<T> implementations with From<T: std::error::Error> for Error.

    Some additional context.

    • Should try to perform OS errors codes from errors such as std::io::Error.
    Enhancement 
    opened by kherge 0
  • Create tests for the multiple subcommands example.

    Create tests for the multiple subcommands example.

    The following checks have been done.

    • [X] I could not find another enhancement request that covers what I need.
    • [X] This request does not cover existing functionality.

    What existing feature needs to be enhanced?

    The example multiple application.

    What problem is being solved?

    There are no tests written for the example.

    How would you like to see this problem solved?

    Examples on how to test the various modules in the application.

    Some additional context.

    No response

    Documentation Enhancement 
    opened by kherge 0
Releases(0.2.1)
Owner
Kevin Herrera
Kevin Herrera
zman is a CLI year (time) progress that small, fast, and just one single binary.

zman zman is a CLI year (time) progress that small, fast, and just one single binary. Features Show year progress Show month, and week progress Show r

azzamsa 14 Feb 22, 2022
CLI tool that make it easier to perform multiple lighthouse runs towards a single target and output the result in a plotable format.

Lighthouse Aggregator CLI tool that make it easier to perform multiple lighthouse runs towards a single target and output the result in a "plotable" f

Polestar 1 Jan 12, 2022
ufo2nft is a CLI Rust tool to automate creating on-chain SVG NFTs from UFO font sources

ufo2nft is a CLI Rust program created by Eli Heuer at the 2022 Seattle Solana Hacker House event. It uses Norad to create on-chain SVG images from UFO font sources, and prepares them for minting as Solana NFTs. For Ethereum NFTs the program can just export the SVGs and Ethereum NFTs can be built manually.

Eli Heuer 1 Feb 10, 2022
dovi_meta is a CLI tool for creating Dolby Vision XML metadata from an encoded deliverable with binary metadata.

dovi_meta dovi_meta is a CLI tool for creating Dolby Vision XML metadata from an encoded deliverable with binary metadata. Building Toolchain The mini

Rainbaby 9 Nov 7, 2022
Multi-threaded CLI torrent scraper for displaying searched for magnet links; tailored for use with plex & ssh.

magnetfinder Multi-threaded CLI torrent aggregator; scrapes torrent results from multiple websites and delivers them into a table in your terminal! Su

Ryan 60 Oct 6, 2022
Multi-threaded CLI torrent scraper for displaying searched for magnet links; tailored for use with plex & ssh.

magnetfinder Multi-threaded CLI torrent aggregator; scrapes torrent results from multiple websites and delivers them into a table in your terminal! Su

null 60 Oct 6, 2022
A strong, compile-time enforced authorization framework for rust applications.

DACquiri A compile-time enforced authorization framework for Rust applications. Authorization In typical applications, authorization checks are perfor

resync 241 Nov 27, 2022
Update informer for CLI applications written in Rust 🦀

Update-informer Update informer for CLI applications written in Rust ?? Usage Add to Cargo.toml: [dependencies] update-notifier = "0.1.0" To check the

Grachev Mikhail 163 Nov 18, 2022
Terminal plotting library for using in Rust CLI applications

textplots Terminal plotting library for using in Rust CLI applications. Should work well in any unicode terminal with monospaced font. It is inspired

Alexey Suslov 158 Nov 30, 2022
A simple command line tool for creating font palettes for engines like libtcod

palscii A simple command line tool for creating font palettes for engines like libtcod. Usage This can also be viewed by running palscii --help. palsc

Steve Troetti 2 May 2, 2022