0.1.6 • Published 1 year ago

citty v0.1.6

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

šŸŒ† citty

npm version npm downloads bundle Codecov License

Elegant CLI Builder

  • Fast and lightweight argument parser based on mri
  • Smart value parsing with typecast, boolean shortcuts and unknown flag handling
  • Nested sub-commands
  • Lazy and Async commands
  • Plugable and composable API
  • Auto generated usage and help

🚧 This project is under heavy development. More features are coming soon!

Usage

Install package:

# npm
npm install citty

# yarn
yarn add citty

# pnpm
pnpm install citty

Import:

// ESM
import { defineCommand, runMain } from "citty";

// CommonJS
const { defineCommand, runMain } = require("citty");

Define main command to run:

import { defineCommand, runMain } from "citty";

const main = defineCommand({
  meta: {
    name: "hello",
    version: "1.0.0",
    description: "My Awesome CLI App",
  },
  args: {
    name: {
      type: "positional",
      description: "Your name",
      required: true,
    },
    friendly: {
      type: "boolean",
      description: "Use friendly greeting",
    },
  },
  run({ args }) {
    console.log(`${args.friendly ? "Hi" : "Greetings"} ${args.name}!`);
  },
});

runMain(main);

Utils

defineCommand

defineCommand is a type helper for defining commands.

runMain

Runs a command with usage support and graceful error handling.

createMain

Create a wrapper around command that calls runMain when called.

runCommand

Parses input args and runs command and sub-commands (unsupervised). You can access result key from returnd/awaited value to access command's result.

parseArgs

Parses input arguments and applies defaults.

renderUsage

Renders command usage to a string value.

showUsage

Renders usage and prints to the console

Development

  • Clone this repository
  • Install latest LTS version of Node.js
  • Enable Corepack using corepack enable
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with šŸ’› Published under MIT License.

Argument parser is based on lukeed/mri by Luke Edwards (@lukeed).

@infinitebrahmanuniverse/nolb-cit@everything-registry/sub-chunk-1328unget-test@appist/appistaliksend-linter@zzhaon/create-electron-appbrisk-csstailwind-to-dartsvgpipesvglbweibo-archivervxrnvxsvurifswagger-typescript-api-3voidonevscemvite-config-checkervertql@dopt/pkg-build@dopt/pkg-clean@dopt/pkg-format@dopt/pkg-lint@dopt/pkg-sync@dopt/please@dopt/please-parser@dopt/resolve-workspace-dependencies@dimcheify/dimui@cristianps1988/ds-template@comet-utils/openapi-generator@corentinth/catalogger@develiott/komp@pergel/clidbshdjs-corebotipxipx-nightlyinstall-pocketbasekintone-plugin-clikysely-ctl@farnabaz/coremocka-cli@sunshj/clianci-reactvedixsaaskittyspacefold-clispacefold-cli-nightly@ourongxing/nitro@ourongxing/nitropacksunshjtehmusimhujantypesteputils-aiunivounjs-docsunjs-docs-nightlyunjs-rekit@authup/server-core@akkuma/vinxi@aklinker1/check@aliksend/linter@aliksend/openapi-routes-generator@beesbuild/utils@blackdark/swagger-typescript-api@capawesome/cli@0x1461a0/sd-plugin-scripts@aabelmann/ui-layer@aa900031/mkdist@codingdud/coolicons@dbarjs/npmauth@design-sync/cli@danizean/cyberzoneyoung-commitzeytalzeytal-nightlyzona-xzr-swagger-apivue-telescope-analyzervinxiunasciiungetundocsundocs-nightlyunbuildtsconfig-checkeruntununstorage-nightlyunstoragezod-pocketbase@pkg-tools/clean@hebilicious/nitro@hebilicious/unstable-nitro@hedgehoglab/crayon-cli@harmonix-js/cli@himanoa/npm-workspace-based-gha-workflow-optimizer@igorjacauna/push-release@igorjacauna/ytdl@floralink/generator@gabortorma/mwm
0.1.6

1 year ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.5

2 years ago

0.1.2

2 years ago

0.1.0

2 years ago

0.1.1

2 years ago

0.0.1

2 years ago

0.0.2

2 years ago

0.0.0

3 years ago