Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80677 views
1
// Generated by CoffeeScript 1.9.3
2
(function() {
3
var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;
4
5
fs = require('fs');
6
7
path = require('path');
8
9
helpers = require('./helpers');
10
11
optparse = require('./optparse');
12
13
CoffeeScript = require('./coffee-script');
14
15
CoffeeScript.register();
16
17
tasks = {};
18
19
options = {};
20
21
switches = [];
22
23
oparse = null;
24
25
helpers.extend(global, {
26
task: function(name, description, action) {
27
var ref;
28
if (!action) {
29
ref = [description, action], action = ref[0], description = ref[1];
30
}
31
return tasks[name] = {
32
name: name,
33
description: description,
34
action: action
35
};
36
},
37
option: function(letter, flag, description) {
38
return switches.push([letter, flag, description]);
39
},
40
invoke: function(name) {
41
if (!tasks[name]) {
42
missingTask(name);
43
}
44
return tasks[name].action(options);
45
}
46
});
47
48
exports.run = function() {
49
var arg, args, e, i, len, ref, results;
50
global.__originalDirname = fs.realpathSync('.');
51
process.chdir(cakefileDirectory(__originalDirname));
52
args = process.argv.slice(2);
53
CoffeeScript.run(fs.readFileSync('Cakefile').toString(), {
54
filename: 'Cakefile'
55
});
56
oparse = new optparse.OptionParser(switches);
57
if (!args.length) {
58
return printTasks();
59
}
60
try {
61
options = oparse.parse(args);
62
} catch (_error) {
63
e = _error;
64
return fatalError("" + e);
65
}
66
ref = options["arguments"];
67
results = [];
68
for (i = 0, len = ref.length; i < len; i++) {
69
arg = ref[i];
70
results.push(invoke(arg));
71
}
72
return results;
73
};
74
75
printTasks = function() {
76
var cakefilePath, desc, name, relative, spaces, task;
77
relative = path.relative || path.resolve;
78
cakefilePath = path.join(relative(__originalDirname, process.cwd()), 'Cakefile');
79
console.log(cakefilePath + " defines the following tasks:\n");
80
for (name in tasks) {
81
task = tasks[name];
82
spaces = 20 - name.length;
83
spaces = spaces > 0 ? Array(spaces + 1).join(' ') : '';
84
desc = task.description ? "# " + task.description : '';
85
console.log("cake " + name + spaces + " " + desc);
86
}
87
if (switches.length) {
88
return console.log(oparse.help());
89
}
90
};
91
92
fatalError = function(message) {
93
console.error(message + '\n');
94
console.log('To see a list of all tasks/options, run "cake"');
95
return process.exit(1);
96
};
97
98
missingTask = function(task) {
99
return fatalError("No such task: " + task);
100
};
101
102
cakefileDirectory = function(dir) {
103
var parent;
104
if (fs.existsSync(path.join(dir, 'Cakefile'))) {
105
return dir;
106
}
107
parent = path.normalize(path.join(dir, '..'));
108
if (parent !== dir) {
109
return cakefileDirectory(parent);
110
}
111
throw new Error("Cakefile not found in " + (process.cwd()));
112
};
113
114
}).call(this);
115
116