-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild
executable file
·53 lines (49 loc) · 1.6 KB
/
build
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
#!/usr/bin/env node
var fs = require('fs'),
exec = require('child_process').exec,
assetStore = require('asset_store'),
jsFile = 'datazooka.js',
demo = 'flights';
var replaceAsset = function(asset) {
return function(text) {
return text.replace('/' + asset.name, asset.url);
};
};
var injectHtml = function(callback) {
fs.readFile('public/test.html', 'utf8', function(err, text) {
if (err) callback(err);
var prod = '',
enabled = true;
text.split(/\n/).forEach(function(line) {
if (/<!-- DEVELOPMENT -->/.test(line)) enabled = false;
line = line.replace(/<!-- PRODUCTION -->/,
'<script src="/' + jsFile + '"></script>');
line = line.replace(/"test\.js"/, '"/demos/' + demo + '.js"');
if (enabled) prod += line + '\n';
if (/<!-- \/DEVELOPMENT -->/.test(line)) enabled = true;
});
callback(null, prod);
});
};
var afterUpload = function() {
var assets = assetStore.assets();
var transforms = Object.keys(assets).map(function(name) {
return replaceAsset(assets[name]);
});
injectHtml(function(err, text) {
if (err) throw err;
text = transforms.reduce(function(text, trans) {
return trans(text);
}, text);
fs.writeFile('public/index.html', text, 'utf8', function(err) {
if (err) throw err;
console.log('-----> index.html written');
});
});
};
exec('./build.sh', {maxBuffer: 400000}, function(err, jsText) {
if (err) throw err;
var definitions = assetStore.findDefinitions();
definitions.push({name: jsFile, text: jsText});
assetStore.upload(definitions, afterUpload);
});