UNPKG

7.96 kBJavaScriptView Raw
1"use strict";
2var task_resolve_1 = require("./task.resolve");
3var path_1 = require("path");
4var command_init_1 = require("./command.init");
5var _ = require("../lodash.custom");
6(function (SignalTypes) {
7 SignalTypes[SignalTypes["Exit"] = "Exit"] = "Exit";
8 SignalTypes[SignalTypes["FileWrite"] = "FileWrite"] = "FileWrite";
9})(exports.SignalTypes || (exports.SignalTypes = {}));
10var SignalTypes = exports.SignalTypes;
11/**
12 * @type {{cwd: *, runMode: string, resumeOnError: boolean, summary: string, strict: boolean}}
13 */
14var defaults = {
15 /**
16 * The current working directory, we never advise changing this
17 */
18 cwd: process.cwd(),
19 /**
20 * By default, tasks will wait in line and run when the previous
21 * one completes. You can set this to 'parallel' instead
22 * if you wish for your code to run as fast as possible
23 */
24 runMode: "series",
25 resumeOnError: false,
26 parallel: false,
27 input: [],
28 /**
29 * Dump json to disk for debugging
30 */
31 dump: false,
32 debug: false,
33 dryRun: false,
34 dryRunDuration: 500,
35 force: false,
36 /**
37 * How much task information should be output
38 * following task completion/setup
39 */
40 verbose: 2,
41 /**
42 * How should task summaries be output
43 */
44 reporter: "default",
45 /**
46 * Will eliminate any crossbow output.
47 *
48 */
49 outputOnly: false,
50 /**
51 * What to do with child process output
52 */
53 suppressOutput: false,
54 /**
55 * Log when tasks start/end
56 */
57 progress: false,
58 /**
59 * should the resolved workload be handed off
60 * to the caller?
61 */
62 handoff: false,
63 /**
64 * Show the prompt for selecting tasks?
65 */
66 interactive: false,
67 /**
68 *
69 */
70 nodeModulesPaths: ["node_modules"],
71 /**
72 *
73 * CI mode - will exit if any shell/npm scripts
74 * return a non-zero exit code
75 *
76 * Should a failing task be allowed to quit the process?
77 */
78 fail: true,
79 /**
80 * Crossbow will add all options to your environment vars
81 * and will be path-based + prefixed
82 * eg:
83 * options: {
84 * docker: {
85 * port: 8000
86 * }
87 * }
88 *
89 * ->
90 * CB_DOCKER_PORT=8000
91 */
92 envPrefix: "cb",
93 /**
94 * Global ENV vars
95 */
96 env: {},
97 /**
98 * Tasks that should be run before any watchers begin
99 */
100 before: [],
101 /**
102 * Any tasks that should be skipped
103 */
104 skip: [],
105 /**
106 *
107 */
108 type: command_init_1.InitConfigFileTypes.yaml,
109 reporters: [],
110 tasksDir: ["tasks"]
111};
112/**
113 * Allow single char flags such as
114 * $ crossbow run task1 task2 -p
115 *
116 * @type {{p: flagTransforms.p}}
117 */
118var flagTransforms = {
119 /**
120 * Take any -e flags and set them
121 * on the config.env vars.
122 *
123 * eg: crossbow run task.js -e PET=kittie
124 */
125 e: function (opts) {
126 opts.e.forEach(function (inputString) {
127 var split = inputString.split("=").map(function (x) { return x.trim(); }).filter(Boolean);
128 if (split.length === 2) {
129 opts.env[split[0]] = split[1];
130 }
131 });
132 return opts;
133 },
134 /**
135 * If parallel run mode has been set, update the
136 * corresponding runMode options too
137 */
138 parallel: function (opts) {
139 if (opts.parallel === true) {
140 opts.runMode = task_resolve_1.TaskRunModes.parallel;
141 return opts;
142 }
143 opts.runMode = task_resolve_1.TaskRunModes.series;
144 return opts;
145 },
146 cwd: function (opts) {
147 opts.cwd = path_1.resolve(opts.cwd);
148 return opts;
149 },
150 input: function (opts) {
151 if (opts.input && !Array.isArray(opts.input)) {
152 opts.input = [opts.input];
153 }
154 return opts;
155 }
156};
157/**
158 * Merge default with incoming opts.
159 * Also deal with single char flag
160 * @returns {*}
161 */
162function merge(opts) {
163 var newOpts = _.assign({}, defaults, opts);
164 return Object.keys(flagTransforms)
165 .reduce(function (opts, x) {
166 if (opts[x] !== undefined) {
167 return flagTransforms[x].call(null, opts);
168 }
169 return opts;
170 }, newOpts);
171}
172exports.merge = merge;
173//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQTJCLGdCQUFnQixDQUFDLENBQUE7QUFHNUMscUJBQXNCLE1BQU0sQ0FBQyxDQUFBO0FBQzdCLDZCQUFrQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBTW5ELElBQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXRDLFdBQVksV0FBVztJQUNuQixrQ0FBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQix1Q0FBaUIsV0FBVyxlQUFBLENBQUE7QUFDaEMsQ0FBQyxFQUhXLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUFIRCxJQUFZLFdBQVcsR0FBWCxtQkFHWCxDQUFBO0FBNEREOztHQUVHO0FBQ0gsSUFBTSxRQUFRLEdBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDbEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBTyxRQUFRO0lBQ3RCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLEVBQUU7SUFDVDs7T0FFRztJQUNILElBQUksRUFBRSxLQUFLO0lBQ1gsS0FBSyxFQUFFLEtBQUs7SUFDWixNQUFNLEVBQUUsS0FBSztJQUNiLGNBQWMsRUFBRSxHQUFHO0lBQ25CLEtBQUssRUFBRSxLQUFLO0lBQ1o7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLENBQUM7SUFDVjs7T0FFRztJQUNILFFBQVEsRUFBRSxTQUFTO0lBQ25COzs7T0FHRztJQUNILFVBQVUsRUFBRSxLQUFLO0lBQ2pCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLEtBQUs7SUFDckI7O09BRUc7SUFDSCxRQUFRLEVBQUUsS0FBSztJQUNmOzs7T0FHRztJQUNILE9BQU8sRUFBRSxLQUFLO0lBQ2Q7O09BRUc7SUFDSCxXQUFXLEVBQUUsS0FBSztJQUNsQjs7T0FF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
\No newline at end of file