Skip to content
yjl9903Public

About

🥪 Yet another Command Line Application Framework desgined for TypeScript.

Topics

Resources

Code of conduct

Contributing

Stars

11 stars

Watchers

1 watching

Forks

Repository files navigation

🥪 Breadc

Ask DeepWiki version CI codecov

Yet another Command Line Application Framework desgined for TypeScript.

  • TypeScript Infer: infer command arguments, option values, and action signatures in IDE automatically
  • Command: support default command, command alias, and nested sub-commands like git remote add <name> <url>
  • Group: organize commands by modules and build large multi-command CLI applications with clear structure
  • Option: support boolean, required, optional, spread options, explicit --no-* / --[no-]* boolean forms, and -- passthrough arguments
  • Middleware: support middleware pipeline and unknown option handling
  • Builtin CLI Features: provide common help / version options and i18n support out of the box
  • Toolkits: contains many useful tools to build your next CLI application, such as ansi color, process death handler, shell compelete script generation and so on.

vscode

Installation

npm i breadc

Usage

Try ./examples/echo.ts.

import { z } from 'zod';
import { breadc } from 'breadc';

const cli = breadc('echo', { version: '1.0.0' })
  .option('--host <host>', 'specify hostname', { default: 'localhost' })
  .option('--port <port>', 'specify port', {
    default: '3000',
    cast: z.coerce.number().int().min(1).max(65535)
  });

cli.command('[message]', 'Say something!').action((message, option) => {
  console.log(message ?? 'You can say anything!');
  const { host, port } = option; // { host: string, port: number, '--': string[] }
  console.log(`Host: ${host}`);
  console.log(`Port: ${port}`);
});

cli.run(process.argv.slice(2)).catch((err) => console.error(err));

If you are using IDEs that support TypeScript (like Visual Studio Code), input something using option, and then you will find the option is automatically typed with { host: string, port: number }. In the figure below, Visual Studio Code will automatically infer that the type of option.host is string and the type of option.port is number.

vscode

Inspiration

License

MIT License © 2023 XLor

About

🥪 Yet another Command Line Application Framework desgined for TypeScript.

Topics

Resources

Code of conduct

Contributing

Stars

11 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Contributors

Languages