tiny-bin
Version:
A library for building tiny and beautiful command line apps.
38 lines (37 loc) • 1.22 kB
JavaScript
/* IMPORT */
import Addon from './addon.js';
import Argument from './argument.js';
import ChainableAction from './chainable_action.js';
import Option from './option.js';
import { isObject } from './utils.js';
/* MAIN */
class ChainableCommandLocal extends Addon {
/* CONSTRUCTOR */
constructor(bin, command) {
super(bin);
this.command = command;
}
/* API */
usage(usage) {
this.command.usage.register(usage);
return this;
}
option(name, description, options) {
const optionOptions = isObject(name) ? name : { name, description, ...options };
const option = new Option(this.bin, optionOptions);
this.command.options.register(option, !!optionOptions.override);
return this;
}
argument(name, description, options) {
const argumentOptions = isObject(name) ? name : { name, description, ...options };
const argument = new Argument(this.bin, argumentOptions);
this.command.arguments.register(argument);
return this;
}
action(handler) {
this.command.handler = handler;
return new ChainableAction(this.bin);
}
}
/* EXPORT */
export default ChainableCommandLocal;