diff --git a/README.md b/README.md index e69de29b..e6e3be77 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,66 @@ +# forever + +A simple CLI tool for ensuring that a given script runs continuously (i.e. forever). + +## Installation + +### Installing npm (node package manager) +
+ curl http://npmjs.org/install.sh | sh ++ +### Installing http-agent +
+ [sudo] npm install forever ++ +## Usage +There are two distinct ways to use forever: through the command line interface, or by requiring the forever module in your own code. + +### Using forever from the command line +You can use forever to run any kind of script continuously (whether it is written in node.js or not). The usage options are simple: + +
+ usage: forever [FILE, ...] [options] + + options: + -m MAX Only run the specified script MAX times + -s, --silent Run the child script silencing stdout and stderr + -h, --help You're staring at it ++ +There are several samples designed to test the fault tolerance of forever. Here's a simple example: + +
+ forever samples/error-on-timer.js -m 5 ++ +### Using forever from node.js +You can also use forever from inside your own node.js code. + +
+ var forever = require('forever'); + + var child = new (forever.Forever)('your-filename.js'), { + max: 3, + silent: true, + options: [] + }); + + child.on('exit', this.callback); + child.run(); ++ +Each forever object is an instance of the node.js core EventEmitter. There are several core events that you can listen for: + +* restart [err, forever]: Raised each time the target script is restarted +* exit [err, forever]: Raised when the call to forever.run() completes +* stdout [err, data]: Raised when data is received from the child process' stdout +* stderr [err, data]: Raised when data is received from the child process' stderr + +## Run Tests +
+ vows test/*-test.js --spec ++ +#### Author: [Charlie Robbins](http://www.charlierobbins.com); \ No newline at end of file diff --git a/lib/forever.js b/lib/forever.js index 798e8702..5272f2bd 100644 --- a/lib/forever.js +++ b/lib/forever.js @@ -16,6 +16,8 @@ var Forever = function (file, options) { this.times = 0; options.options.unshift(path.join(__dirname, file)); + options.silent = options.silent || false; + options.forever = options.forever || false; this.options = options; }; diff --git a/package.json b/package.json index 0457735c..b7d5b9ea 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ }, "keywords": ["cli", "fault tolerant", "sysadmin", "tools"], "dependencies": { - "optimist": ">= 0.0.3" + "optimist": ">= 0.0.3", + "vows": ">= 0.5.1" }, "bin": { "forever": "./bin/forever" }, "main": "./lib/forever",