UNPKG

2.22 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const utils_1 = require("./utils");
4const dep_builder_1 = require("./dep-builder");
5const task_manager_1 = require("./task-manager");
6/**
7 * Set global options for all tasks.
8 * @param options
9 */
10function setGlobalOptions(options) {
11 Object.assign(task_manager_1.getGlobalTaskManager().globalOptions, options);
12}
13exports.setGlobalOptions = setGlobalOptions;
14var TaskOptions;
15(function (TaskOptions) {
16 TaskOptions.last = empty();
17 function empty() {
18 return {
19 desc: undefined,
20 optionDefs: [],
21 strict: task_manager_1.getGlobalTaskManager().globalOptions.strict,
22 loading: undefined,
23 };
24 }
25 TaskOptions.empty = empty;
26})(TaskOptions || (TaskOptions = {}));
27function desc(desc) {
28 TaskOptions.last.desc = desc;
29}
30exports.desc = desc;
31function option(rawName, description, config) {
32 TaskOptions.last.optionDefs.push([rawName, description, config]);
33}
34exports.option = option;
35function strict() {
36 TaskOptions.last.strict = true;
37}
38exports.strict = strict;
39/**
40 * Set options for next task.
41 * @param options
42 */
43function setOption(options) {
44 Object.assign(TaskOptions.last, options);
45}
46exports.setOption = setOption;
47/**
48 * Define a task
49 * @param name
50 * @param dependencies
51 * @param fn
52 */
53function task(name, dependencies = [], fn) {
54 if (utils_1.Is.fn(dependencies)) {
55 fn = dependencies;
56 dependencies = [];
57 }
58 const t = {
59 name,
60 options: {},
61 optionDefs: TaskOptions.last.optionDefs,
62 desc: TaskOptions.last.desc,
63 strict: TaskOptions.last.strict,
64 loading: TaskOptions.last.loading,
65 rawArgs: [],
66 dependencies: dependencies.map(d => {
67 if (utils_1.Is.str(d)) {
68 return { name: d, options: {} };
69 }
70 else if (d instanceof dep_builder_1.DepBuilder) {
71 return d.toTaskDep();
72 }
73 return d;
74 }),
75 fn,
76 };
77 TaskOptions.last = TaskOptions.empty();
78 task_manager_1.getGlobalTaskManager().addTask(t);
79 return t;
80}
81exports.task = task;
82//# sourceMappingURL=task.js.map
\No newline at end of file