clunk
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

Clunk

Command Line Argument Parser helper library.

Features

  • Written in Typescript.
  • SMALL.

flavorite

Install

npm install clunk

USAGE Example

import {clunk} from "clunk"
const {flags} = clunk()
console.log(`Cool ${flags.cool}!`)

Then you could do

$ node index.js --cool beans
// outputs "Cool beans!"

Inputs are allowed

// $ node index.js start server --port 8080 ./src
const {inputs, flags} = clunk()
const [mainCommand, secondaryOption, targetPath] = inputs
if(mainCommand === "start") {
  if (secondaryOption === "server) {
    startServer(flags.port, targetPath)
  }
}

Configs are highly suggested

Make the use of aliases quite more explicit. Aliases will work on there own without a config but its hard to tell when to take the next item or be a boolean.

import {Config, clunk} from "clunk"
const config: Config = {
  time: {
    type: Number,
    alias: "t"
  },
  alpha: {
    type: Boolean,
    alias: "a"
  },
  bravo: {
    type: String,
    alias: "b"
  }
}
const {inputs, flags} = clunk(config)
// $ node index.js image run -t 777 -a this-will-be-an-input -b this-is-a-flag
console.log({inputs, flags})
// {
//   inputs: ["image", "run", "this-will-be-an-input"],
//   flags: {t: 777, a: true b: "this-is-a-flag"}
// }

Docker CLI Example

Not that we are trying to rebuild docker or anything. But a command like this should work:

$ docker run -dit --rm --name react-boilerplate-app -p 8080:80 react-boilerplate-image

Here's an example config that would handle something like this

import {Config, clunk} from "clunk"
const config: Config = {
  d: {type: Boolean},
  i: {type: Boolean},
  t: {type: Boolean},
  rm: {type: Boolean},
  name: {type: String},
  port: {
    type: String
    alias: "p"
  },
}
const {inputs, flags} = clunk(config)
console.log({inputs, flags})

Should look something like this:

{
  "inputs": ["run", "react-boilerplate-image"],
  "flags": {
    "d": true,
    "i": true,
    "t": true,
    "rm": true,
    "name": "react-boilerplate-app",
    "port": "8080:80"
  }
}

Test

Tested! Try the tests:

npm run test

Package Sidebar

Install

npm i clunk

Weekly Downloads

3

Version

1.3.0

License

MIT

Unpacked Size

18.2 kB

Total Files

15

Last publish

Collaborators

  • patomation