1 | var Command, Option, Signature, _;
|
2 |
|
3 | _ = require('lodash');
|
4 |
|
5 | Command = require('./command');
|
6 |
|
7 | Option = require('./option');
|
8 |
|
9 | Signature = require('./signature');
|
10 |
|
11 | exports.parse = require('./parse').parse;
|
12 |
|
13 | exports.state = require('./state');
|
14 |
|
15 | exports.defaults = require('./settings');
|
16 |
|
17 | exports.utils = require('./utils');
|
18 |
|
19 | exports.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 |
|
32 | exports.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 |
|
39 | exports.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 |
|
55 | exports.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 |
|
72 | exports.run = function(argv, callback) {
|
73 | var parsedArgs;
|
74 | parsedArgs = exports.parse(argv);
|
75 | return exports.execute(parsedArgs, callback);
|
76 | };
|