Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80635 views
1
2
var request = require('request');
3
var glob = require('glob');
4
var fs = require('fs.extra');
5
var mkdirp = require('mkdirp');
6
var server = require('./server.js');
7
8
// Sadly, our setup fatals when doing multiple concurrent requests
9
// I don't have the time to dig into why, it's easier to just serialize
10
// requests.
11
var queue = (function() {
12
var is_executing = false;
13
var queue = [];
14
function push(fn) {
15
queue.push(fn);
16
execute();
17
}
18
function execute() {
19
if (is_executing) {
20
return;
21
}
22
if (queue.length === 0) {
23
return;
24
}
25
var fn = queue.shift();
26
is_executing = true;
27
fn(function() {
28
is_executing = false;
29
execute()
30
});
31
}
32
return {push: push};
33
})();
34
35
glob('src/**/*.*', function(er, files) {
36
var count = files.length;
37
38
files.forEach(function(file) {
39
var targetFile = file.replace(/^src/, 'build');
40
41
if (file.match(/\.js$/)) {
42
targetFile = targetFile.replace(/\.js$/, '.html');
43
queue.push(function(cb) {
44
request('http://localhost:8079/' + targetFile.replace(/^build\//, ''), function(error, response, body) {
45
mkdirp.sync(targetFile.replace(new RegExp('/[^/]*$'), ''));
46
fs.writeFileSync(targetFile, body);
47
cb();
48
});
49
});
50
} else {
51
queue.push(function(cb) {
52
mkdirp.sync(targetFile.replace(new RegExp('/[^/]*$'), ''));
53
fs.copy(file, targetFile, cb);
54
});
55
}
56
});
57
58
queue.push(function(cb) {
59
server.close();
60
console.log('It is live at: http://facebook.github.io/flux/')
61
cb();
62
});
63
});
64
65