Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kamataryo/xcm
A Node.js CLI tool builder.
https://github.com/kamataryo/xcm
Last synced: 17 days ago
JSON representation
A Node.js CLI tool builder.
- Host: GitHub
- URL: https://github.com/kamataryo/xcm
- Owner: kamataryo
- License: mit
- Created: 2019-05-02T02:24:50.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-05-18T14:16:59.000Z (over 5 years ago)
- Last Synced: 2024-12-08T18:44:17.380Z (29 days ago)
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/xcm
- Size: 235 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Xcm
[![Build Status](https://travis-ci.org/kamataryo/xcm.svg?branch=master)](https://travis-ci.org/kamataryo/xcm)
![](./raw/image.png)
XCM or Xcommand is a Node.js CLI tool builder.
## installation
```shell
$ yarn add xcm
$ npm install xcm --save # Use npm
```## Usage
```JavaScript
#!/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()
``````shell
$ ./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 #
```## APIs
### `constructor`
```javascript
import Command from "xcm";
const commnad = new Command("cli.js");
command.action(() => process.stdout.write("init!")).parse();
``````shell
$ ./cli.js # init!
```### `command.sub(phrase:string)`
`sub` define sub command.
```javascript
import Command from "xcm";
new Command("cli.js");
.sub("hello")
.action(() => process.stdout.write("hello!"))
.parse();
``````shell
$ ./cli.js hello # hello!
```### `command.option(phrase, options)`
`option` defines acceptable options. This will be used with `help`.
```javascript
import Command from "xcm";
new Command("cli.js");
.option('word', { isRequired: true })
.action(opts => process.stdout.write(`say ${opts.word}!`))
.parse();
``````shell
$ ./cli.js --word=hello # say hello!
```### `command.action(callback)`
### `action callback`
### `command.describe(description:string)`
`describe` defines description for the command. This will be used with `help`.
### `command.super()`
### `command.parse()`
`parse` starts parse given environment and execution of each command.
### `command.parseAsync()`
## Development
```shell
$ git clone [email protected]:kamataryo/xcm.git
$ cd xcm
$ yarn # or npm install
```