UNPKG

1.55 kBJavaScriptView Raw
1'use strict';
2
3// $ npm i gulpjs/gulp.git#4.0 --save-dev
4// @url https://github.com/jonschlinkert/time-require
5// require('time-require');
6// try { require('debug-utils'); } catch(e) {}
7
8function ngFactory(taker, options) {
9
10 if(!taker || (!options && taker && taker.constructor.name === 'Object')) {
11 options = taker;
12 var Undertaker = require('undertaker');
13 taker = new Undertaker();
14 }
15
16 // Load all resolved undertaker tasks
17 var TasksManager = require('./tasks').bind(taker);
18 var tasks = TasksManager.resolve('undertaker-*');
19 var defaults = TasksManager.loadDefaults(tasks);
20 TasksManager.registerTasks(tasks);
21
22 // Initialize and fetch config
23 var ConfigRegistry = require('./config');
24 var configRegistry = new ConfigRegistry(defaults);
25 // Reset each task in the registry with
26 // `ConfigRegistry.prototype.set` which will bind them to the config object.
27 taker.registry(configRegistry);
28
29 // Finally load any found indexes containing meta-aliases
30 // @TODO investigate why loading index registries before config breaks the fn binding
31 TasksManager.registerIndexes(tasks);
32
33 return taker;
34
35}
36
37ngFactory.use = function(taker, options) {
38
39 // Monkeypatch legacy array handling
40 // eg. gulp.task('serve', ['ng:serve']);
41 var taskFn = taker.task;
42 taker.task = function(name, meta) {
43 if(Array.isArray(meta)) {
44 return taskFn.call(taker, name, taker.series(meta));
45 }
46 return taskFn.apply(taker, arguments);
47 };
48
49 return ngFactory.bind(null, taker)(options);
50};
51
52module.exports = ngFactory;