1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/env node
-
- var fs = require('fs');
- var path = require('path');
-
- // default DEBUG if not set already
- process.env.DEBUG = process.env.DEBUG || 'tinylr tinylr:*';
-
- var Server = require('..').Server;
- var noptify = require('noptify');
-
- var program = noptify(process.argv, { program: 'tiny-lr' })
- .version('0.0.1')
- .option('port', '-p', 'Port to listen on (default: 35729)', Number)
- .option('pid', 'Path to the generated PID file (default: ./tiny-lr.pid)', String);
-
- var opts = program.parse();
- opts.port = opts.port || 35729;
- opts.pid = opts.pid || path.resolve('tiny-lr.pid');
-
- // if it was required, don't start the server and expose the Server object.
- if (module.parent) {
- module.exports = Server;
- return;
- }
-
- // Server
-
- // Thanks to @FGRibreau for his very simple and very handy gist:
- // https://gist.github.com/1846952
-
- process.title = 'tiny-lr';
-
- process.on('exit', function() {
- console.log('... Closing server ...');
- console.log('... Removing pid file (%s) ...', opts.pid);
- fs.unlinkSync(opts.pid);
- });
-
- process.on('SIGTERM', function() {
- return process.exit(0);
- });
-
- process.on('SIGINT', function() {
- return process.exit(0);
- });
-
-
- var srv = new Server(opts);
-
- srv.on('close', function() {
- process.nextTick(function() {
- process.exit();
- });
- });
-
- console.log();
- srv.listen(opts.port, function(err) {
- fs.writeFile(opts.pid, process.pid, function(err) {
- if(err) {
- console.log('... Cannot write pid file: %s', opts.pid);
- process.exit(1)
- }
-
- console.log('... Listening on %s (pid: %s) ...', opts.port, process.pid);
- console.log('... pid file: %s', opts.pid);
- });
- });
|