UNPKG

2.05 kBJavaScriptView Raw
1var Command, Option, Signature, _;
2
3_ = require('lodash');
4
5Command = require('./command');
6
7Option = require('./option');
8
9Signature = require('./signature');
10
11exports.parse = require('./parse').parse;
12
13exports.state = require('./state');
14
15exports.defaults = require('./settings');
16
17exports.utils = require('./utils');
18
19exports.command = function(options) {
20 var command;
21 options.options = _.map(options.options, function(option) {
22 var result;
23 result = _.clone(option);
24 result.signature = new Signature(option.signature);
25 return new Option(result);
26 });
27 options.signature = new Signature(options.signature);
28 command = new Command(options);
29 return exports.state.commands.push(command);
30};
31
32exports.globalOption = function(options) {
33 var option;
34 options.signature = new Signature(options.signature);
35 option = new Option(options);
36 return exports.state.globalOptions.push(option);
37};
38
39exports.permission = function(name, permissionFunction) {
40 if (name == null) {
41 throw new Error('Missing permission name');
42 }
43 if (!_.isString(name)) {
44 throw new Error('Invalid permission name');
45 }
46 if (permissionFunction == null) {
47 throw new Error('Missing permission function');
48 }
49 if (!_.isFunction(permissionFunction)) {
50 throw new Error('Invalid permission function');
51 }
52 return exports.state.permissions[name] = permissionFunction;
53};
54
55exports.execute = function(args, callback) {
56 return exports.state.getMatchCommand(args.command, function(error, command) {
57 if (error != null) {
58 return typeof callback === "function" ? callback(error) : void 0;
59 }
60 if (command == null) {
61 return exports.defaults.actions.commandNotFound(args.command);
62 }
63 try {
64 return command.execute(args, callback);
65 } catch (_error) {
66 error = _error;
67 return typeof callback === "function" ? callback(error) : void 0;
68 }
69 });
70};
71
72exports.run = function(argv, callback) {
73 var parsedArgs;
74 parsedArgs = exports.parse(argv);
75 return exports.execute(parsedArgs, callback);
76};