/
index.js
77 lines (66 loc) · 2.5 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var version = '0.0.4';
var jade = require('jade');
var program = require('commander');
var fs = require('fs');
var read = require('fs-readdir-recursive');
var path = require('path');
var clc = require('cli-color');
var pd = require('pretty-data').pd;
var error = clc.red.bold;
var warn = clc.yellow;
var notice = clc.yellow;
var good = clc.green;
program
.version(version)
.option('-e, --extension [extension]', 'output filename extension (default: html)', 'html')
.option('-b, --beautify', 'beautify output')
.option('-o, --out [out]', 'relative output path for each file')
.parse(process.argv);
var files = read('.');
(function (err, files) {
if (err) { console.log(err); return; }
var jadeFiles = [];
var i;
for (i=0;i<files.length;i++) {
if (path.extname(files[i]) === ".jade") {
jadeFiles.push(files[i]);
}
}
if (jadeFiles.length===0) { console.log("no jade files found"); return; }
var callback = function (event, jadefilename) {
if (!jadefilename) { return; }
fs.readFile(jadefilename, function (err, data) {
if (err) { console.log(err); return; }
var outputfilename = path.dirname(jadefilename) + '/' + program.out + path.basename(jadefilename, ".jade") + "." + program.extension;
var time = new Date();
var compliedData;
try {
compliedData = jade.compile(data)({development:true});
} catch (err) {
console.warn(error(jadefilename), err, time.toTimeString());
console.dir(Object.keys(err));
console.log(compliedData);
return;
}
if (program.beautify) {
compliedData = pd.xml(compliedData);
}
fs.writeFile(outputfilename, compliedData, function (err) {
if (err) { console.log(err); }
console.log(good(jadefilename+" > "+outputfilename), time.toTimeString());
});
});
};
for (i=0;i<jadeFiles.length;i++) {
var jadefilename = jadeFiles[i];
fs.watch(jadefilename, (function (file, callback) {
var file = file;
var callback = callback;
return function (event) {
callback(event, file);
};
}(jadefilename, callback)));
}
console.log("watching", jadeFiles.length, "jade files for changes.", notice("(jadewatch "+version+")"));
})(!files, files);
// var name = path.basename(p, ".jade")