Skip to content

A library to help you create type-safe CLI's fast and simple

License

Notifications You must be signed in to change notification settings

jamie-pate/typed-cli

 
 

Repository files navigation

typed-cli

Coverage Status

typed-cli logo

A library to help you create type-safe CLI's fast and simple.

Project state

This project is still alive and maintained. But it is not in active development.

Usage example

import {cli, option} from 'typed-cli';
import app from './app';

const {options} = cli({
    options: {
        env: option.oneOf(['dev', 'prod'] as const)
            .alias('e')
            .required()
            .description('app environment'),
        port: option.int
            .alias('p')
            .default(80)
            .description('port'),
    }
});

// port: number
// env: 'dev' | 'prod'
const {port, env} = options;


const DB_HOSTS = {
    dev: 'localhost:1234',
    prod: '1.2.3.4:9999',
} as const;

// Type safe!
// no "No index signature with a parameter of type 'string'" kind of errors
// because typeof env is 'dev' | 'prod'
app.run({
    db: DB_HOSTS[env],
    port
});

This code will behave like this:

terminal-demo

Playground

You can test it without installing anything on your machine. Just go to the

Interactive Demo

(⚠️it's about 20Mb of traffic). It has interactive terminal and code editor, you can change the samples and see how it reacts.

Key features

  • Type safety
  • input validation (customizable)
  • help generation
  • printing reports for invalid data
  • tab completions
  • input data transformation
  • support for commands

Documentation

The docs can be found here: https://int0h.github.io/typed-cli-docs/

About

A library to help you create type-safe CLI's fast and simple

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.5%
  • JavaScript 2.4%
  • Other 0.1%