Skip to content
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
110 lines (81 sloc) 3 KB


Build Status Coverage Status MIT License


Command wrapper for reporting the result. It is useful for cron jobs.


% go get

Built binaries are available on gihub releases.


% horenso --reporter /path/to/ -- /path/to/yourjob


  horenso --reporter /path/to/ -- /path/to/job [...]

Application Options:
  -r, --reporter=/path/to/      handler for reporting the result of the job
  -n, --noticer='ruby /path/to/noticer.rb' handler for noticing the start of the job
  -T, --timestamp                          add timestamp to merged output
  -t, --tag=job-name                       tag of the job
  -o, --override-status                    override command exit status, always exit 0
  -v, --verbose                            verbose output. it can be stacked like -vv for
                                           more detailed log
  -l, --log=logfile-path                   logfile path. The strftime format like
                                           '%Y%m%d.log' is available.

Handlers are should be an executable or command line string. You can specify multiple reporters and noticers. In this case, they are executed concurrently.


Normally you can use horenso with a wrapper shell script like following.

/path/to/horenso \
  -n /path/to/         \
  -r /path/to/        \
  -r 'ruby /path/to/reporter.rb' \
  -- "$@"

And specify this in the crontab like following.

3 4 * * * /path/to/ /path/to/job --args...

If you want to change reporting way, you just have to change reporter script. You have no risk to crash wrapper shell.

Execution Sequence

  1. Start the command
  2. [optional] Run the noticers
  3. Wait to finish the command
  4. Run the reporters

result JSON

The reporters and noticers accept a result JSON via STDIN that reports command result like following.

  "command": "perl -E 'say 1;warn \"$$\\n\";'",
  "commandArgs": [
    "say 1;warn \"$$\\n\";"
  "output": "1\n95030\n",
  "stdout": "1\n",
  "stderr": "95030\n",
  "exitCode": 0,
  "result": "command exited with code: 0",
  "pid": 95030,
  "startAt": "2015-12-28T00:37:10.494282399+09:00",
  "endAt": "2015-12-28T00:37:10.546466379+09:00",
  "hostname": "",
  "systemTime": 0.034632,
  "userTime": 0.026523





You can’t perform that action at this time.