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 | 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 | */
|
125 | var 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 | */
|
169 | function 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 | }
|
179 | exports.merge = merge;
|
180 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQTJCLGdCQUFnQixDQUFDLENBQUE7QUFHNUMscUJBQXNCLE1BQU0sQ0FBQyxDQUFBO0FBQzdCLDZCQUFrQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBTW5ELElBQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXRDLFdBQVksV0FBVztJQUNuQixrQ0FBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQix1Q0FBaUIsV0FBVyxlQUFBLENBQUE7QUFDaEMsQ0FBQyxFQUhXLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUFIRCxJQUFZLFdBQVcsR0FBWCxtQkFHWCxDQUFBO0FBZ0VEOztHQUVHO0FBQ0gsSUFBTSxRQUFRLEdBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDbEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBTyxRQUFRO0lBQ3RCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLEVBQUU7SUFDVCxHQUFHLEVBQUUsRUFBRTtJQUNQLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCOztPQUVHO0lBQ0gsSUFBSSxFQUFFLEtBQUs7SUFDWCxLQUFLLEVBQUUsS0FBSztJQUNaLE1BQU0sRUFBRSxLQUFLO0lBQ2IsY0FBYyxFQUFFLEdBQUc7SUFDbkIsS0FBSyxFQUFFLEtBQUs7SUFDWjs7O09BR0c7SUFDSCxPQUFPLEVBQUUsQ0FBQztJQUNWOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFNBQVM7SUFDbkI7OztPQUdHO0lBQ0gsVUFBVSxFQUFFLEtBQUs7SUFDakI7O09BRUc7SUFDSCxjQUFjLEVBQUUsS0FBSztJQUNyQjs7T0FFRztJQUNILFFBQVEsRUFBRSxLQUFLO0lBQ2Y7OztPQUdH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 |
\ | No newline at end of file |