Skip to content

playmedia/command-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

command-runner

A simple command runner, inspired from Whiskey process runner.

Installation

npm install -g command-runner

This will install the command-runner module globally and add the cr cli tool to your PATH.

Usage

cr --config filename.json [--debug]

Configuration file

This JSON file is used to specify all the commands to run asynchronously.

Example configuration file :

{
  "http-server": {
    "cmd": [ "http-server", "-p", "8000", "./" ],
    "log": {
      "type": "file",
      "options": {
        "name": "http-server.log"
      }
    },
    "wait": {
      "type": "socket",
      "options": {
        "host": "127.0.0.1",
        "port": "8000",
        "timeout": "3000"
      }
    }
  },
  "localtunnel": {
    "cmd": [ "lt", "--port", "8000" ],
    "wait": {
      "type": "output",
      "options": {
        "match": "your url is:",
        "timeout": "3000"
      }
    }
  },
  "test": {
    "cmd": [ "tape", "tests/**/*.js" ],
    "depends": [ "http-server", "localtunnel" ],
    "log": {
      "type": "output"
    },
    "exit_on_success": true
  }
}

Options

Name Type Required Description
cmd Array yes The command to run
cwd string no The command working directory. Default is current directory.
depends Array no The names of command dependencies. Name must be defined in configuration.
log Object no The command output log configuration.
wait Object no The command start wait condition configuration.
exit_on_success boolean no Indicate if runner gracefully exit if the command terminate with zero exit code. Default is false.
abort_on_error boolean no Indicate if runner gracefully abort if the command terminate with non-zero exit code. Default is true.

"log" configuration object

Name Type Required Description
type string yes The output log type : file, output, stdout or stderr.
options Object no The output log options.

output: respectively redirect command process stdout and stderr to runner stdout and stderr. Has no options.

stdout: redirect only command process stdout to runner stdout. Has no options.

stderr: redirect only command process stderr to runner stderr. Has no options.

file: redirect command process output to a file using the following options :

Name Type Required Description
name string yes The filename.
input string no The stream input : output, stdout or stderr. Default is output.
stream_options Object no The fs.createStream options.

fs.createStream default behavious is open file for writing. The file is created (if it does not exist) or truncated (if it exists). To append, just set stream_options to {"flags": "a"}.

"wait" configuration object

Name Type Required Description
type string yes The wait condition type : output, socket, done, or timer.
options Object no The wait condition options.

output: wait for an output string (stdout and stderr) to match using the following options :

Name Type Required Description
match string yes The string to match.
timeout number no The wait timeout in milliseconds. Default is 10000.

socket: wait for a socket using the following options :

Name Type Required Description
port number yes The port number.
host string no The hostname or ip address. Default is localhost
timeout number no The wait timeout in milliseconds. Default is 10000.
interval number no The connect retry interval in milliseconds. Default is 200.

done: wait for a process to run and exit with success code using the following options :

Name Type Required Description
timeout number no The wait timeout in milliseconds. Must be greater than or equal to 100.

timer: wait for a timer duration using the following options :

Name Type Required Description
duration number yes The wait duration in milliseconds. Must be greater than or equal to 100.