Skip to content

A thin and strongly typed CLI arguments parser for Node.js.

License

Notifications You must be signed in to change notification settings

TrigenSoftware/Argue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2a00fdb · Mar 10, 2024
Dec 2, 2023
Nov 27, 2022
Oct 14, 2022
Jan 17, 2022
Feb 17, 2022
Jan 17, 2022
Jan 17, 2022
Nov 27, 2022
Jan 17, 2022
Jan 17, 2022
Nov 30, 2023
Jan 17, 2022
Feb 17, 2022
Oct 14, 2022
Jan 17, 2022
Dec 2, 2023
Mar 10, 2024
Dec 2, 2023
Nov 27, 2022
Sep 15, 2023
Oct 14, 2022

Repository files navigation

argue-cli

ESM-only package NPM version Node version Dependencies status Install size Build status Coverage status

A thin and strongly typed CLI arguments parser for Node.js.

Usage

  1. Install
# pnpm
pnpm add argue-cli
# yarn
yarn add argue-cli
# npm
npm i argue-cli
  1. Import in your code and use it!
import { read, end, expect, alias, option, readOptions } from 'argue-cli'

/**
 * Expect and read one of the commands
 */
const command = expect(
  alias('install', 'i'),
  'remove'
)
let options = {}

if (command === 'install') {
  /**
   * Read passed options
   */
  options = readOptions(
    option(alias('save', 'S'), Boolean),
    option(alias('saveDev', 'save-dev', 'D'), Boolean),
    option('workspace', String)
  )
}

/**
 * Read next argument
 */
const packageName = read()

/**
 * Expect end of the arguments
 */
end()

/* ... */

API

Method Description
function read(): string
Read next argument. Throws error if no next argument.
function end(): void
Expectation of the end. Throws an error if there are more arguments left.
function expect(...argRefs: ArgRef[]): string
Expect one of the given arguments.
function alias(name: string, ...aliases: string[]): AliasArgRef
Describe argument with aliases.
function option(argRef: ArgRef, type: PrimitiveConstructor): OptionReader
Describe option with value.
function readOptions(...optionReaders: OptionReader[]): OptionResult
Read options from arguments.

TypeScript

In API section types are described in a simplified way. Detailed example of the types you can see here.