XCM or Xcommand is a Node.js CLI tool builder.
$ yarn add xcm
$ npm install xcm --save # Use npm
#!/usr/bin/env node
//
// cli.js
//
import Command from 'xcm';
const command = new Command('xcm');
command
.sub('init')
.action(() => process.stdout.write('init!'))
.sub('something')
.action(() => process.stdout.write('init something!'))
command
.sub('opt')
.option('hello', {isRequred: true, default: 'world' })
.action(options => process.stdout.write(options))
command
.sub('a')
.sub('b')
.sub('c')
.sub('d')
.sub('e')
.action(() => process.stdout.write('abcde!'))
.super()
.super()
.super()
.super()
.super()
.sub('A')
.sub('B')
.sub('C')
.sub('D')
.sub('E')
.action(() => process.stdout.write('ABCDE!'))
command
.sub('help')
.help()
// Go!
command.parse()
$ ./cli.js init # init!
$ ./cli.js init something # init something!
$ ./cli.js opt # { hello: "world" }
$ ./cli.js opt -y --hello="Node.js" # { y: true, hello: "Node.js" }
$ ./cli.js a b c d e # abcde!
$ ./cli.js A B C D E # ABCDE!
$ ./cli.js help # <show help>
import Command from "xcm";
const commnad = new Command("cli.js");
command.action(() => process.stdout.write("init!")).parse();
$ ./cli.js # init!
sub
define sub command.
import Command from "xcm";
new Command("cli.js");
.sub("hello")
.action(() => process.stdout.write("hello!"))
.parse();
$ ./cli.js hello # hello!
option
defines acceptable options. This will be used with help
.
import Command from "xcm";
new Command("cli.js");
.option('word', { isRequired: true })
.action(opts => process.stdout.write(`say ${opts.word}!`))
.parse();
$ ./cli.js --word=hello # say hello!
describe
defines description for the command. This will be used with help
.
parse
starts parse given environment and execution of each command.
$ git clone git@github.com:kamataryo/xcm.git
$ cd xcm
$ yarn # or npm install