-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
57 lines (48 loc) · 1.26 KB
/
index.js
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
var path = require('path');
var coffee = require('coffee-script');
module.exports = function(tufilename) {
var tufile = null, moduleToRequire = null;
var tufilefolder = process.cwd();
do {
try {
moduleToRequire = path.join(tufilefolder, tufilename)
tufile = require(moduleToRequire);
}
catch(e) {
if(e.code != 'MODULE_NOT_FOUND' || e.message.indexOf(moduleToRequire) === -1) {
throw(e);
}
}
finally {
tufilefolder = path.dirname(tufilefolder);
}
}
while(!tufile && path.dirname(tufilefolder) != tufilefolder);
tufilefolder = path.dirname(moduleToRequire);
if(!tufile) {
var err = new Error("Tufile not found");
err.code = 'TUFILE_NOT_FOUND';
throw(err);
}
process.chdir(tufilefolder);
var task = process.argv[2];
if(!task || task === '--help' || task === '-h'){
var err = new Error();
err.code = 'NO_TASK_DEFINED';
err.tasks = Object.keys(tufile);
err.file = moduleToRequire;
throw(err);
}
var taskFun = tufile[task];
if(!taskFun){
var err = new Error("No such task: " + task);
err.code = 'NO_SUCH_TASK';
err.tasks = Object.keys(tufile);
err.file = moduleToRequire;
err.task = task;
throw(err);
}
else {
return taskFun();
}
}