UNPKG

1.35 kBJavaScriptView Raw
1var $, M, gulp, m;
2
3$ = {};
4
5$.type = require('../dist/type');
6
7gulp = require('gulp');
8
9M = class M {
10 /*
11 add(name, fn)
12 execute(name, fn)
13 get([name])
14 */
15 add(name, fn) {
16 var _fn, type;
17 type = $.type(fn);
18 if (type !== 'asyncfunction' && type !== 'function') {
19 throw new Error(`task/error: invalid type of '${name}()': '${type}'`);
20 }
21 if (type !== 'asyncfunction') {
22 // generate a wrapper
23 _fn = fn;
24 fn = async function() {
25 await new Promise(function(resolve) {
26 return resolve();
27 });
28 return _fn();
29 };
30 }
31 gulp.task(name, fn);
32 return this;
33 }
34
35 execute(name, fn) {
36 if (!fn) {
37 return this.get(name);
38 }
39 this.add(name, fn);
40
41 // magic value: true
42 // do not change
43 return true;
44 }
45
46 get(name) {
47 var map, result;
48 map = gulp._registry._tasks;
49 if (!name) {
50 result = {};
51 for (name in map) {
52 result[name] = map[name].unwrap();
53 }
54 return result;
55 }
56 result = map[name];
57 if (!result) {
58 throw new Error(`task/error: invalid task '${name}'`);
59 }
60 return result.unwrap();
61 }
62
63};
64
65m = new M();
66
67module.exports = function(...arg) {
68 var result;
69 result = m.execute(...arg);
70
71 // magic value
72 if (result !== true) {
73 return result;
74 }
75 return this;
76};