UNPKG

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