1 | ;
|
2 | var task_resolve_1 = require("./task.resolve");
|
3 | var path_1 = require("path");
|
4 | var command_init_1 = require("./command.init");
|
5 | var _ = require("../lodash.custom");
|
6 | (function (SignalTypes) {
|
7 | SignalTypes[SignalTypes["Exit"] = "Exit"] = "Exit";
|
8 | SignalTypes[SignalTypes["FileWrite"] = "FileWrite"] = "FileWrite";
|
9 | })(exports.SignalTypes || (exports.SignalTypes = {}));
|
10 | var SignalTypes = exports.SignalTypes;
|
11 | /**
|
12 | * @type {{cwd: *, runMode: string, resumeOnError: boolean, summary: string, strict: boolean}}
|
13 | */
|
14 | var 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 | */
|
118 | var 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 | */
|
162 | function 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 | }
|
172 | exports.merge = merge;
|
173 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQTJCLGdCQUFnQixDQUFDLENBQUE7QUFHNUMscUJBQXNCLE1BQU0sQ0FBQyxDQUFBO0FBQzdCLDZCQUFrQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBTW5ELElBQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXRDLFdBQVksV0FBVztJQUNuQixrQ0FBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQix1Q0FBaUIsV0FBVyxlQUFBLENBQUE7QUFDaEMsQ0FBQyxFQUhXLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUFIRCxJQUFZLFdBQVcsR0FBWCxtQkFHWCxDQUFBO0FBNEREOztHQUVHO0FBQ0gsSUFBTSxRQUFRLEdBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDbEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBTyxRQUFRO0lBQ3RCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLEVBQUU7SUFDVDs7T0FFRztJQUNILElBQUksRUFBRSxLQUFLO0lBQ1gsS0FBSyxFQUFFLEtBQUs7SUFDWixNQUFNLEVBQUUsS0FBSztJQUNiLGNBQWMsRUFBRSxHQUFHO0lBQ25CLEtBQUssRUFBRSxLQUFLO0lBQ1o7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLENBQUM7SUFDVjs7T0FFRztJQUNILFFBQVEsRUFBRSxTQUFTO0lBQ25COzs7T0FHRztJQUNILFVBQVUsRUFBRSxLQUFLO0lBQ2pCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLEtBQUs7SUFDckI7O09BRUc7SUFDSCxRQUFRLEVBQUUsS0FBSztJQUNmOzs7T0FHRztJQUNILE9BQU8sRUFBRSxLQUFLO0lBQ2Q7O09BRUc7SUFDSCxXQUFXLEVBQUUsS0FBSztJQUNsQjs7T0FF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 |
\ | No newline at end of file |