-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjager.js
More file actions
90 lines (74 loc) · 1.97 KB
/
jager.js
File metadata and controls
90 lines (74 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/' _@/'? '\@_
'use strict';
var _ = require('lodash');
var Chackle = require('./lib/Chackle');
var Plugin = require('./lib/Plugin');
var Task = require('./lib/Task');
var Preset = require('./lib/Preset');
var File = require('./lib/File');
var Logger = require('./lib/Logger');
function getChackleBuilder() {
function createChackleLinker(parent) {
return (function(/* name [, ...] */) {
var b = function() {
var args = Array.prototype.slice.call(arguments);
var name = args.shift();
var plugin = new Plugin(name, args);
var child = new Chackle(parent, plugin);
parent.add(child);
return createChackleLinker(child);
};
b.getChackle = function() {
return parent;
};
return b;
}());
}
return createChackleLinker(new Chackle());
}
var tasks = {};
module.exports = {
create: function create(start) {
var chackleBuilder = getChackleBuilder();
if (start) {
start.forEach(function(item) {
chackleBuilder = chackleBuilder.apply(null, item);
});
}
return chackleBuilder;
},
preset: function preset(name, options) {
try {
Preset.load(name, options);
} catch (e) {
Logger.error('Could not load preset: ' + name);
Logger.error(e);
}
},
task: function task(/* name, [options,] chain[, chain[, chain ...]] */) {
var args = Array.prototype.slice.call(arguments);
var name = args.shift();
var options = _.isPlainObject(args[0]) ? args.shift() : {};
if (!tasks[name]) {
tasks[name] = new Task(name, options);
args.forEach(function(arg) {
if (typeof arg === 'function' || Array.isArray(arg)) {
tasks[name].add(arg);
}
});
} else {
Logger.error('Duplicate task name: ' + name);
}
},
run: function(tasklist, options) {
Logger.setDebug(options.debug);
tasklist.forEach(function(task) {
if (tasks[task]) {
tasks[task].run(options.production);
} else {
Logger.error('Unknown task: ' + task);
}
});
},
File: File,
};