UNPKG

capitano

Version:

Powerful, non opitionated command line parser for serious applications

77 lines (63 loc) 2.05 kB
var Command, Option, Signature, _; _ = require('lodash'); Command = require('./command'); Option = require('./option'); Signature = require('./signature'); exports.parse = require('./parse').parse; exports.state = require('./state'); exports.defaults = require('./settings'); exports.utils = require('./utils'); exports.command = function(options) { var command; options.options = _.map(options.options, function(option) { var result; result = _.clone(option); result.signature = new Signature(option.signature); return new Option(result); }); options.signature = new Signature(options.signature); command = new Command(options); return exports.state.commands.push(command); }; exports.globalOption = function(options) { var option; options.signature = new Signature(options.signature); option = new Option(options); return exports.state.globalOptions.push(option); }; exports.permission = function(name, permissionFunction) { if (name == null) { throw new Error('Missing permission name'); } if (!_.isString(name)) { throw new Error('Invalid permission name'); } if (permissionFunction == null) { throw new Error('Missing permission function'); } if (!_.isFunction(permissionFunction)) { throw new Error('Invalid permission function'); } return exports.state.permissions[name] = permissionFunction; }; exports.execute = function(args, callback) { return exports.state.getMatchCommand(args.command, function(error, command) { if (error != null) { return typeof callback === "function" ? callback(error) : void 0; } if (command == null) { return exports.defaults.actions.commandNotFound(args.command); } try { return command.execute(args, callback); } catch (error1) { error = error1; return typeof callback === "function" ? callback(error) : void 0; } }); }; exports.run = function(argv, callback) { var parsedArgs; parsedArgs = exports.parse(argv); return exports.execute(parsedArgs, callback); };