UNPKG

6.52 kBJavaScriptView Raw
1"use strict";
2var cli_commands_1 = require("./cli.commands");
3var _ = require("../lodash.custom");
4var cli_parse_1 = require("./cli.parse");
5function default_1(args) {
6 var command = args[0];
7 var match = getCommand(command, cli_commands_1.commands);
8 if (!match.length) {
9 // first look if the user provided a --version flag
10 var cli_1 = cli_parse_1.default(["no-command"].concat(args), require("../opts/global-common.json"));
11 if (cli_1.flags.version) {
12 return { cli: cli_1, execute: false, output: [require("../package.json").version] };
13 }
14 var commandOptions_1 = cli_commands_1.commands["run"].opts.map(require);
15 var opts_1 = _.merge.apply(_, [{}].concat(commandOptions_1));
16 var cli2 = cli_parse_1.default(["run"].concat(args), opts_1);
17 /**
18 * If there was additional input, try to run a task
19 */
20 if (cli2.input.length > 1) {
21 return { cli: cli2, execute: true, output: [] };
22 }
23 return { cli: cli2, execute: false, output: [printHelp(cli_commands_1.commands)] };
24 }
25 var commandName = match[0];
26 var commandOptions = cli_commands_1.commands[commandName].opts.map(require);
27 var opts = _.merge.apply(_, [{}].concat(commandOptions));
28 var cli = cli_parse_1.default(args, opts);
29 /**
30 * Here, the user gave the --help flag along with a valid
31 * command. So we show command-specific help
32 */
33 if (cli.flags.help) {
34 return { cli: cli, execute: false, output: [cli_commands_1.commands[match[0]].help] };
35 }
36 return { cli: cli, execute: true, output: [] };
37}
38Object.defineProperty(exports, "__esModule", { value: true });
39exports.default = default_1;
40function printHelp(commands) {
41 return "Usage: crossbow [command] [..args] [OPTIONS]\n\n{bold:Crossbow Commands:} \n\n" + cli_commands_1.twoColFromJson(commands, "description") + "\n\n{bold:Example: Run the task 'build-js'}\n\n $ crossbow run build-js\n \n{bold:Example: Run the tasks build-css and build-js in sequence}\n\n $ crossbow run build-css build-js\n \n{bold:For more detailed help, use the command name + the --help flag}\n\n $ crossbow run --help\n $ crossbow init --help\n";
42}
43function getCommand(incoming, commands) {
44 return Object.keys(commands).reduce(function (acc, item) {
45 var selected = commands[item];
46 /**
47 * A direct match - this means the typed command matches
48 * an command name exactly.
49 *
50 * eg:
51 * $ crossbow run
52 *
53 * -> ['run']
54 */
55 if (item === incoming) {
56 return acc.concat(item);
57 }
58 /**
59 * An alias match is when a short-hand command was given
60 * and it existed in the 'alias' array for a command.
61 *
62 * eg:
63 *
64 * $ crossbow run
65 *
66 * commands:
67 *
68 * run: { alias:['run', 'r'] }
69 *
70 * -> ['run']
71 *
72 */
73 if (selected.alias && selected.alias.indexOf(incoming) > -1) {
74 return acc.concat(item);
75 }
76 return acc;
77 }, []);
78}
79exports.getCommand = getCommand;
80//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQW9ELGdCQUFnQixDQUFDLENBQUE7QUFDckUsSUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDdEMsMEJBQWlDLGFBQWEsQ0FBQyxDQUFBO0FBUS9DLG1CQUF5QixJQUFjO0lBRW5DLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFNLEtBQUssR0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLHVCQUFRLENBQUMsQ0FBQztJQUU5QyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWhCLG1EQUFtRDtRQUNuRCxJQUFNLEtBQUcsR0FBRyxtQkFBSyxDQUFDLENBQUMsWUFBWSxTQUFLLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7UUFFbEYsRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxFQUFDLFVBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELElBQU0sZ0JBQWMsR0FBRyx1QkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsSUFBTSxNQUFJLEdBQWEsQ0FBQyxDQUFDLEtBQUssT0FBUCxDQUFDLEdBQU8sRUFBRSxTQUFLLGdCQUFjLEVBQUMsQ0FBQztRQUN0RCxJQUFNLElBQUksR0FBYyxtQkFBSyxDQUFDLENBQUMsS0FBSyxTQUFLLElBQUksQ0FBQyxFQUFFLE1BQUksQ0FB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
\No newline at end of file