1 | var _, async, settings;
|
2 |
|
3 | _ = require('lodash');
|
4 |
|
5 | async = require('async');
|
6 |
|
7 | settings = require('./settings');
|
8 |
|
9 | exports.commands = [];
|
10 |
|
11 | exports.globalOptions = [];
|
12 |
|
13 | exports.permissions = {};
|
14 |
|
15 | exports.findCommandBySignature = function(signature) {
|
16 | return _.find(exports.commands, function(command) {
|
17 | return command.signature.toString() === signature;
|
18 | });
|
19 | };
|
20 |
|
21 | exports.getMatchCommand = function(signature, callback) {
|
22 | var commands;
|
23 | commands = _.reject(exports.commands, function(command) {
|
24 | return command.isWildcard();
|
25 | });
|
26 | return async.eachSeries(commands, function(command, done) {
|
27 | return command.signature.matches(signature, function(result) {
|
28 | if (!result) {
|
29 | return done();
|
30 | }
|
31 | return callback(null, command);
|
32 | });
|
33 | }, function(error) {
|
34 | var result, wildcardSignature;
|
35 | if (error != null) {
|
36 | return callback(error);
|
37 | }
|
38 | wildcardSignature = settings.signatures.wildcard;
|
39 | result = exports.findCommandBySignature(wildcardSignature);
|
40 | return callback(null, result);
|
41 | });
|
42 | };
|