tiny-bin
Version:
A library for building tiny and beautiful command line apps.
35 lines (34 loc) • 1.03 kB
JavaScript
/* IMPORT */
import Addon from './addon.js';
import Argument from './argument.js';
import ChainableBinLocal from './chainable_bin_local.js';
import Option from './option.js';
/* MAIN */
class ChainableCommand 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 option = new Option(this.bin, { name, description, ...options });
this.command.options.register(option, !!options.override);
return this;
}
argument(name, description, options = {}) {
const argument = new Argument(this.bin, { name, description, ...options });
this.command.arguments.register(argument);
return this;
}
action(handler) {
this.command.handler = handler;
return new ChainableBinLocal(this.bin);
}
}
/* EXPORT */
export default ChainableCommand;