6
6
*
7
7
*/
8
8
9
- var static = require ( '../vendor/node-static/lib/node-static' ) ,
9
+ var colors = require ( 'colors' ) ,
10
+ argv = require ( 'optimist' ) . argv ,
11
+ static = require ( '../vendor/node-static/lib/node-static' ) ,
10
12
http = require ( 'http' ) ;
11
13
12
14
var HTTPServer = exports . HTTPServer = function ( options ) {
13
- var defaults = {
14
- root : options . root || "." ,
15
- port : options . port || 8080 ,
16
- host : options . host || 'localhost' ,
17
- cache : options . cache || 3600 ,
18
- autoIndex : options . autoIndex || true ,
19
- silent : options . silent || false
20
- }
15
+ this . root = argv . _ [ 0 ] || "." ;
16
+ this . port = argv . p || 8080 ;
17
+ this . host = argv . a || 'localhost' ;
18
+ this . cache = argv . c || 3600 ;
19
+ this . autoIndex = argv . i || true ;
20
+ this . silent = argv . s || argv . silent || false ;
21
21
for ( var o in options ) {
22
- this [ o ] = options [ o ] || defaults [ o ] ;
22
+ this [ o ] = options [ o ] ;
23
23
}
24
24
this . file = new ( static . Server ) ( this . root , { autoIndex : this . autoIndex , cache : Number ( this . cache ) } ) ;
25
25
}
26
+
26
27
27
28
HTTPServer . prototype . start = function ( ) {
28
29
var self = this ;
30
+ if ( argv . h || argv . help ) {
31
+ return showHelp ( ) ;
32
+ }
33
+ self . log ( 'Starting up http-server, serving ' . yellow
34
+ + self . root . cyan
35
+ + ' on port: ' . yellow
36
+ + self . port . toString ( ) . cyan ) ;
29
37
http . createServer ( function ( request , response ) {
30
38
request . on ( 'end' , function ( ) {
31
- self . log ( '[served] ' + request . url ) ;
39
+ self . log ( '[' . grey + ' served' . yellow + ' ] '. grey + request . url ) ;
32
40
return self . file . serve ( request , response ) ;
33
41
} ) ;
34
42
} ) . listen ( self . port ) ;
43
+ self . log ( 'http-server successfully started: ' . green
44
+ + 'http://' . cyan
45
+ + self . host . cyan
46
+ + ':' . cyan
47
+ + self . port . toString ( ) . cyan ) ;
48
+ self . log ( 'Hit CTRL-C to stop the server' )
35
49
}
36
50
37
51
HTTPServer . prototype . log = function ( message ) {
@@ -40,3 +54,16 @@ HTTPServer.prototype.log = function (message) {
40
54
}
41
55
}
42
56
57
+ function showHelp ( ) {
58
+ var help = [
59
+ "usage: http-server [path] [options]" ,
60
+ "" ,
61
+ "options:" ,
62
+ " -p Port to use [8080]" ,
63
+ " -a Address to use [localhost]" ,
64
+ " -i Display autoIndex [true]" ,
65
+ " -s --silent Suppress log messages from output" ,
66
+ " -h --help Print this list and exit." ,
67
+ ] . join ( '\n' ) ;
68
+ console . log ( help ) ;
69
+ }
0 commit comments