summaryrefslogtreecommitdiffstats
path: root/bin/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/utils.js')
-rw-r--r--bin/utils.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/bin/utils.js b/bin/utils.js
index 804d6f0..77d70c6 100644
--- a/bin/utils.js
+++ b/bin/utils.js
@@ -1,6 +1,9 @@
var Q = require('q');
var _ = require('lodash');
+var http = require('http');
+var send = require('send');
+
var url = require('url');
var cp = require('child_process');
@@ -49,10 +52,41 @@ function titleCase(str)
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
+function serveDir(dir, port) {
+ var d = Q.defer();
+
+ var server = http.createServer(function(req, res){
+ // Render error
+ function error(err) {
+ res.statusCode = err.status || 500;
+ res.end(err.message);
+ }
+
+ // Redirect to directory's index.html
+ function redirect() {
+ res.statusCode = 301;
+ res.setHeader('Location', req.url + '/');
+ res.end('Redirecting to ' + req.url + '/');
+ }
+
+ // Send file
+ send(req, url.parse(req.url).pathname)
+ .root(dir)
+ .on('error', error)
+ .on('directory', redirect)
+ .pipe(res);
+ }).listen(port);
+
+ d.resolve(server);
+
+ return d.promise;
+}
+
// Exports
module.exports = {
gitURL: gitURL,
githubID: githubID,
titleCase: titleCase,
+ serveDir: serveDir,
};