1 | ;
|
2 | var Immutable = require("immutable");
|
3 | var fromJS = Immutable.fromJS, Map = Immutable.Map;
|
4 | var Rx = require("rx");
|
5 | /**
|
6 | * A task context is just an Immutable Map of key=>value pairs
|
7 | * that may be used to provide addition context to the task running
|
8 | * environment. This is especially useful in situations where you need
|
9 | * to do something that MUST block the task running altogether. An example
|
10 | * would be hashing files/directories to determine if a task/group of tasks should
|
11 | * run.
|
12 | */
|
13 | function getContext(tasks, trigger) {
|
14 | /**
|
15 | * Define a list of async actions
|
16 | * that must complete before any tasks are executed
|
17 | * @type {Array}
|
18 | */
|
19 | var preExecutionTasks = [
|
20 | require("./command.run.pre-execution").createHashes
|
21 | ];
|
22 | /**
|
23 | * Now wrap each Function in an observable
|
24 | * @type {Rx.Observable<PreExecutionTask>[]}
|
25 | */
|
26 | var observables = preExecutionTasks.map(function (fn) {
|
27 | return Rx.Observable.create(function (obs) {
|
28 | fn(tasks, trigger).subscribe(obs);
|
29 | });
|
30 | });
|
31 | /**
|
32 | * Run each item in sequence
|
33 | * finally producing an Immutable Map from all the gathered values
|
34 | */
|
35 | return Rx.Observable
|
36 | .from(observables)
|
37 | .concatAll()
|
38 | .toArray()
|
39 | .map(function (xs) {
|
40 | return (_a = Map({})).mergeDeep.apply(_a, xs.map(function (x) { return fromJS(x); }));
|
41 | var _a;
|
42 | });
|
43 | }
|
44 | Object.defineProperty(exports, "__esModule", { value: true });
|
45 | exports.default = getContext;
|
46 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5ydW4uY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kLnJ1bi5jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxxQ0FBd0M7QUFFakMsSUFBQSx5QkFBTSxFQUFFLG1CQUFHLENBQWM7QUFFaEMsdUJBQTBCO0FBSTFCOzs7Ozs7O0dBT0c7QUFDSCxvQkFBbUMsS0FBYSxFQUFFLE9BQXVCO0lBRXJFOzs7O09BSUc7SUFDSCxJQUFNLGlCQUFpQixHQUE0QjtRQUMvQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxZQUFZO0tBQ3RELENBQUM7SUFFRjs7O09BR0c7SUFDSCxJQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBQyxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUc7WUFDckMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVIOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVTtTQUNmLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDakIsU0FBUyxFQUFFO1NBQ1gsT0FBTyxFQUFFO1NBQ1QsR0FBRyxDQUFDLFVBQUEsRUFBRTtRQUNILE1BQU0sQ0FBQyxDQUFBLEtBQUEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsU0FBUyxXQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQVQsQ0FBUyxDQUFDLEVBQUU7O0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQzs7QUFoQ0QsNkJBZ0NDIn0= |
\ | No newline at end of file |