diff options
Diffstat (limited to 'bin/utils.js')
-rw-r--r-- | bin/utils.js | 34 |
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, }; |