annotate node_modules/node-static/bin/cli.js @ 69:333afcfd3f3a

added node_modules to project and fixed path to chronometer also added deps to installer script
author tzara <rc-web@kiben.net>
date Sat, 26 Oct 2013 14:12:50 +0100
parents
children 0ae87af84e2f
rev   line source
rc-web@69 1 #!/usr/bin/env node
rc-web@69 2
rc-web@69 3 var fs = require('fs'),
rc-web@69 4 path = require('path'),
rc-web@69 5 tty = require('tty'),
rc-web@69 6 statik = require('./../lib/node-static');
rc-web@69 7
rc-web@69 8 var argv = require('optimist')
rc-web@69 9 .usage([
rc-web@69 10 'USAGE: $0 [-p <port>] [<directory>]',
rc-web@69 11 'simple, rfc 2616 compliant file streaming module for node']
rc-web@69 12 .join('\n\n'))
rc-web@69 13 .option('port', {
rc-web@69 14 alias: 'p',
rc-web@69 15 'default': 8080,
rc-web@69 16 description: 'TCP port at which the files will be served'
rc-web@69 17 })
rc-web@69 18 .option('cache', {
rc-web@69 19 alias: 'c',
rc-web@69 20 description: '"Cache-Control" header setting, defaults to 3600'
rc-web@69 21 })
rc-web@69 22 .option('version', {
rc-web@69 23 alias: 'v',
rc-web@69 24 description: 'node-static version'
rc-web@69 25 })
rc-web@69 26 .option('headers', {
rc-web@69 27 alias: 'H',
rc-web@69 28 description: 'additional headers (in JSON format)'
rc-web@69 29 })
rc-web@69 30 .option('header-file', {
rc-web@69 31 alias: 'f',
rc-web@69 32 description: 'JSON file of additional headers'
rc-web@69 33 })
rc-web@69 34 .option('help', {
rc-web@69 35 alias: 'h',
rc-web@69 36 description: 'display this help message'
rc-web@69 37 })
rc-web@69 38 .argv;
rc-web@69 39
rc-web@69 40 var dir = argv._[0] || '.';
rc-web@69 41
rc-web@69 42 var trainwreck = fs.readFileSync(path.join(__dirname, '../etc/trainwreck.jpg')),
rc-web@69 43 notFound = fs.readFileSync(path.join(__dirname, '../etc/404.html'))
rc-web@69 44 .toString()
rc-web@69 45 .replace('{{trainwreck}}', trainwreck.toString('base64'));
rc-web@69 46
rc-web@69 47 var colors = require('colors');
rc-web@69 48
rc-web@69 49 var log = function(request, response, statusCode) {
rc-web@69 50 var d = new Date();
rc-web@69 51 var seconds = d.getSeconds() < 10? '0'+d.getSeconds() : d.getSeconds(),
rc-web@69 52 datestr = d.getHours() + ':' + d.getMinutes() + ':' + seconds,
rc-web@69 53 line = datestr + ' [' + response.statusCode + ']: ' + request.url,
rc-web@69 54 colorized = line;
rc-web@69 55 if (tty.isatty(process.stdout.fd))
rc-web@69 56 colorized = (response.statusCode >= 500) ? line.red.bold :
rc-web@69 57 (response.statusCode >= 400) ? line.red :
rc-web@69 58 line;
rc-web@69 59 console.log(colorized);
rc-web@69 60 };
rc-web@69 61
rc-web@69 62 var file, options;
rc-web@69 63
rc-web@69 64 if (argv.help){
rc-web@69 65 require('optimist').showHelp(console.log);
rc-web@69 66 process.exit(0);
rc-web@69 67 }
rc-web@69 68
rc-web@69 69 if (argv.version){
rc-web@69 70 console.log('node-static', statik.version.join('.'));
rc-web@69 71 process.exit(0);
rc-web@69 72 }
rc-web@69 73
rc-web@69 74 if (argv.cache){
rc-web@69 75 (options = options || {}).cache = argv.cache;
rc-web@69 76 }
rc-web@69 77
rc-web@69 78 if (argv.headers){
rc-web@69 79 (options = options || {}).headers = JSON.parse(argv.headers);
rc-web@69 80 }
rc-web@69 81
rc-web@69 82 if (argv['header-file']){
rc-web@69 83 (options = options || {}).headers =
rc-web@69 84 JSON.parse(fs.readFileSync(argv['header-file']));
rc-web@69 85 }
rc-web@69 86
rc-web@69 87 file = new(statik.Server)(dir, options);
rc-web@69 88
rc-web@69 89 require('http').createServer(function (request, response) {
rc-web@69 90 request.addListener('end', function () {
rc-web@69 91 file.serve(request, response, function(e, rsp) {
rc-web@69 92 if (e && e.status === 404) {
rc-web@69 93 response.writeHead(e.status, e.headers);
rc-web@69 94 response.end(notFound);
rc-web@69 95 log(request, response);
rc-web@69 96 } else {
rc-web@69 97 log(request, response);
rc-web@69 98 }
rc-web@69 99 });
rc-web@69 100 }).resume();
rc-web@69 101 }).listen(+argv.port);
rc-web@69 102
rc-web@69 103 console.log('serving "' + dir + '" at http://127.0.0.1:' + argv.port);
rc-web@69 104