Skip to main content
  1. All Posts/

awesome-cli-frameworks

Tools HTML

Awesome-cli-framework

Collection of framework to build beautiful command line interface in different languages


Bash/Shell

  • argc A bash cli framework, also a task management & automation tool (written in rust).
  • Bashly : A command line application (written in Ruby) that lets you generate feature-rich bash command line tools. Bashly lets you focus on your specific code, without worrying about command line argument parsing, usage texts, error messages and other functions that are usually handled by a framework in any other programming language.

C++

  • argh! : Argh! A minimalist argument handler.
  • args : A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).
  • CLI11 : A command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface.
  • cxxopt : Lightweight C++ command line option parser.
  • docopt.cpp : C++11 port of docopt.
  • gflags : The gflags package contains a C++ library that implements commandline flags processing. It includes built-in support for standard types such as string and the ability to define flags in the source file in which they are used. Online documentation available at:

Deno

  • deno-cliffy : Command line framework for deno sauropod Including Commandline-Interfaces, Prompts, CLI-Table, Arguments Parser and more…

Dotnet/C#

  • CliFX : A simple to use, yet powerful framework for building command line applications. Its primary goal is to completely take over the user input layer, allowing you to forget about infrastructural concerns and instead focus on writing your application.
  • CliWrap : CliWrap is a library for interacting with external command line interfaces. It provides a convenient model for launching processes, redirecting input and output streams, awaiting completion, handling cancellation, and more.
  • CommandDotnet : Makes it easy to build console apps as simply as you would like and as feature rich as you need.
  • CommandLine : The Command Line Parser Library offers CLR applications a clean and concise API for manipulating command line arguments and related tasks, such as defining switches, options and verb commands.
  • command-line-api : Command line parsing, invocation, and rendering of terminal output.
  • CommandLineUtils : This project helps you create command line applications using .NET. It simplifies parsing arguments provided on the command line, validating user inputs, and generating help text.
  • gui.cs : Console-based user interface toolkit for .NET applications.
  • spectre.console : A .NET 5/.NET Standard 2.0 library that makes it easier to create beautiful, cross platform, console applications.

Useful awesome list for Dotnet cli

  • awesome-dotnet by @quozd : A collection of awesome .NET libraries, tools, frameworks, and software.

Fortran

  • FLAP : A KISS pure Fortran Library for building powerful, easy-to-use, elegant command line interfaces.

Go

  • cli : A simple, fast, and fun package for building command line apps in Go.
  • Cobra : Many of the most widely used Go projects are built using Cobra, such as: Kubernetes, Hugo, rkt, etcd, Moby (former Docker), Docker (distribution), OpenShift, Delve, GopherJS, CockroachDB, Bleve, ProjectAtomic (enterprise), Giant Swarm’s gsctl, Nanobox/Nanopack, rclone, nehm, Pouch, Istio, Prototool, mattermost-server, Gardener, Linkerd,
    etc.
  • Golang Agrparse : The goal of this project is to bring ease of use and flexibility of argparse (Python) to Go.
  • Docopt Go : docopt parses command-line arguments based on a help message. Don’t write parser code: a good help message already has all the necessary information in it.
  • Mow.cli : A versatile library for building CLI applications in Go
  • Clif : Go framework for rapid command line application development.

Useful awesome list for Go cli

  • Awesome-go by @avelino : A curated list of awesome Go frameworks, libraries and software. Look at Command Line

Haskell

  • CmdArgs : CmdArgs is a Haskell library for defining command line parsers.
  • Docopt.hs : A Haskell port of python’s docopt.
  • optparse-applicative : A haskell library for parsing options on the command line, and providing a powerful applicative interface for composing them. It takes care of reading and validating the arguments passed to the command line, handling and reporting errors, generating a usage line, a comprehensive help screen, and enabling context-sensitive bash, zsh, and fish completions.

Java

  • args4j : A small Java class library that makes it easy to parse command line options/arguments in your CLI application.
  • Apache Commons CLI : Apache Commons CLI provides a simple API for presenting, processing and validating a Command Line Interface.
  • Jcommander : An annotation based parameter parsing framework for Java 8.
  • Jline3 : A Java library for handling console input. People familiar with the readline/editline capabilities for modern shells (such as bash and tcsh) will find most of the command editing features of JLine to be familiar.
  • Picocli : A modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease.

JavaScript

  • Oclif : Oclif is a framework for building CLIs in Node.js. This framework was built out of the Heroku CLI but generalized to build any custom CLI. It’s designed both for single-file CLIs with a few flag options, or for very complex CLIs that have subcommands (like git or heroku).
  • Commander.js : The complete solution for node.js command-line interfaces.
  • Gluegun : A delightful toolkit for building TypeScript-powered command-line apps.
  • Ink : React for interactive command-line apps. (See also Pastel)
  • node-seeli : Object orientated, event driven , Interactive CLI module. Seeli aims to give you the tools to compose A command line interface the way you want it, and otherwise, stays out of your way.
  • Caporal.js : A full-featured framework for building command line applications (cli) with node.js, including help generation, colored output, verbosity control, custom logger, coercion and casting, typos suggestions, and auto-complete for bash/zsh/fish.
  • args : Toolkit for building command line interfaces.
  • Inquirer.js : Inquirer.js strives to be an easily embeddable and beautiful command line interface for Node.js.
  • Vorpal : Vorpal is Node’s first framework for building interactive CLI applications. With a simple and powerful API, Vorpal opens the door to a new breed of rich, immersive CLI environments. [NOT MAINTAINED]
  • Yargs : Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface.

Julia

  • Comonicon.jl : Your best CLI generator in JuliaLang.

Kotlin

  • clikt : Multiplatform command line interface parsing for Kotlin.
  • kotlinx-cli : Pure Kotlin implementation of a generic CLI parser.

Ocaml

  • cmdliner : Declarative definition of command line interfaces for OCaml.
  • clap : Command-Line Argument Parsing, imperative style with a consumption mechanism.
  • minicli : Minimalist OCaml library for command line parsing.

PHP

  • CliFramework : CLIFramework is a command-line application framework, for building flexiable, simple command-line applications.
  • laravel-zero : A micro-framework that provides an elegant starting point for your console application. It is an unofficial and customized version of Laravel optimized for building command-line applications.
  • minicli : A minimalist framework for command-line applications in PHP.
  • php-cli : PHP Console Application made easy- build great console apps with ease. Comes with Zero Dependency and Autocompletion support.
  • php-cli-tools : A collection of tools to help with PHP command line utilities.
  • Silly : Silly CLI micro-framework based on Symfony Console.
  • Symfony/Console : The Console component of symfony eases the creation of beautiful and testable command line interfaces.