annotate node_modules/node-static/bin/cli.js @ 101:52e44ee1c791 tip master

enabled all scores in autostart script
author Rob Canning <rc@kiben.net>
date Tue, 21 Apr 2015 16:20:57 +0100
parents 0ae87af84e2f
children
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 colors = require('colors');
rc-web@69 43
rc-web@69 44 var log = function(request, response, statusCode) {
rc-web@69 45 var d = new Date();
rc-web@69 46 var seconds = d.getSeconds() < 10? '0'+d.getSeconds() : d.getSeconds(),
rc-web@69 47 datestr = d.getHours() + ':' + d.getMinutes() + ':' + seconds,
rc-web@69 48 line = datestr + ' [' + response.statusCode + ']: ' + request.url,
rc-web@69 49 colorized = line;
rc-web@69 50 if (tty.isatty(process.stdout.fd))
rc-web@69 51 colorized = (response.statusCode >= 500) ? line.red.bold :
rc-web@69 52 (response.statusCode >= 400) ? line.red :
rc-web@69 53 line;
rc-web@69 54 console.log(colorized);
rc-web@69 55 };
rc-web@69 56
rc-web@69 57 var file, options;
rc-web@69 58
rc-web@69 59 if (argv.help){
rc-web@69 60 require('optimist').showHelp(console.log);
rc-web@69 61 process.exit(0);
rc-web@69 62 }
rc-web@69 63
rc-web@69 64 if (argv.version){
rc-web@69 65 console.log('node-static', statik.version.join('.'));
rc-web@69 66 process.exit(0);
rc-web@69 67 }
rc-web@69 68
rc-web@69 69 if (argv.cache){
rc-web@69 70 (options = options || {}).cache = argv.cache;
rc-web@69 71 }
rc-web@69 72
rc-web@69 73 if (argv.headers){
rc-web@69 74 (options = options || {}).headers = JSON.parse(argv.headers);
rc-web@69 75 }
rc-web@69 76
rc-web@69 77 if (argv['header-file']){
rc-web@69 78 (options = options || {}).headers =
rc-web@69 79 JSON.parse(fs.readFileSync(argv['header-file']));
rc-web@69 80 }
rc-web@69 81
rc-web@69 82 file = new(statik.Server)(dir, options);
rc-web@69 83
rc-web@69 84 require('http').createServer(function (request, response) {
rc-web@69 85 request.addListener('end', function () {
rc-web@69 86 file.serve(request, response, function(e, rsp) {
rc-web@69 87 if (e && e.status === 404) {
rc-web@69 88 response.writeHead(e.status, e.headers);
rob@76 89 response.end("Not Found");
rc-web@69 90 log(request, response);
rc-web@69 91 } else {
rc-web@69 92 log(request, response);
rc-web@69 93 }
rc-web@69 94 });
rc-web@69 95 }).resume();
rc-web@69 96 }).listen(+argv.port);
rc-web@69 97
rc-web@69 98 console.log('serving "' + dir + '" at http://127.0.0.1:' + argv.port);
rc-web@69 99