applause

Crates.ioapplause
lib.rsapplause
version0.1.1
sourcesrc
created_at2022-07-31 01:10:23.890376
updated_at2023-12-29 12:40:19.556817
descriptionCommand Line Interfaces and Configuration Management made easy
homepagehttps://github.com/ciresnave/applause
repositoryhttps://github.com/ciresnave/applause
max_upload_size
id635885
size33,104
CireSnave (ciresnave)

documentation

https://github.com/ciresnave/applause

README

Applause

You deserve applause!

WARNING: Applause is not ready for use. It may not function yet.

Table of Contents

Overview

The Applause crate is the logical successor to Clap. It is intended to be a more flexible, more powerful, and more ergonomic command line argument parser.

Note: Applause is created by a completely different group and not, at this point, endorsed by Clap or its maintainers.

Clap's Legacy

Clap allowed Rust programmers to annotate an existing struct with attributes to define the command line interface. Clap then generated the parser needed to read command line parameters into that struct without any additional code. The approach was relatively simple and flexible.

Why Applause?

Applause is the logical successor of Clap. Clap was a great tool and deserves recognition. We considered using the name Clap2 in homage but thought that might be misconstrued as a new version of Clap. We decided to go with Applause to still pay tribute to Clap while also implying this crate is something special (worthy of applause).

Development Information

Goals

  • Match Most Clap Capabilities
  • Minimized Boilerplate through Opinionated Defaults (Batteries Included..just works without config)
    • Defaults to ALL Features Enabled
    • Defaults each Functionality to Automatically Configured and Running
  • Config Parser & Generator Derive Macro
    • Parses and Generates to/from multiple sources
      • Defaults
      • Database
        • SQLite
        • MySQL
        • PostgreSQL
        • Key-Value Store
      • Config Files
        • TOML
        • YAML
        • JSON
        • XML
        • INI
        • .ENV
      • Environment Variables
      • Command Line Interface
    • Modular Parser/Generator (can insert sub-parsers into existing parsers)
    • Deriving Config generates documentation from doc comments during compile
      • CLI Help
      • Man Page
      • Markdown
    • Field attributes allow parsing/generating customization
      • Format Strings
      • RegEx
      • Custom Function-Based Parsing
      • Template File Specification
      • Validation
      • Type Conversion
      • Sub-Parser/Generator Insertion
  • Feature Gate everything that isn't required to be in the core
  • Easy Feature Addition by Developers (Plugins)
  • Integration with Other Crates (behind Feature Gates)
  • 100% Documentation Coverage
  • 100% Test Coverage
  • 100% Example Coverage
  • Video Tutorials

Non-Goals

  • Support for Every Possible Use Case
  • Backwards Compatibility with Clap
Commit count: 2

cargo fmt