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...
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

Terminal plotting library for using in Rust CLI applications
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

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

An extensible plotting library for CLI applications.
An extensible plotting library for CLI applications.

termplot An extensible plotting library for CLI applications. Quick Start Documentation Examples Plotting a function Historigram Composing multiple pl

CLI for self-bootstrapped Python applications

PyApp PyApp is a CLI wrapper for Python applications that bootstrap themselves at runtime. Each application is configured with environment variables a

Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.
Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.

Ember Ember is a simple and fun 2D rendering library for Rust, allowing you to quickly create graphics and interactive applications with ease. It uses

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

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
botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

botwork botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven develo

Nitimis 8 Apr 17, 2023
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
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 17 Dec 21, 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
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 12 Dec 14, 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 247 Dec 20, 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
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 59 Dec 10, 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 59 Dec 10, 2022
Multi-protocol CLI download accelerator

dlrs dlrs is a multi-protocol download tool for the command line. Written in Rust, dlrs splits your downloads to speed them up where possible. Feature

Tushar 7 Aug 7, 2023