shellhub
v1.0.0
Published
A simple HTTP server to invoke shell scripts, typically used for git hooks.
Downloads
11
Readme
shellhub
An HTTP server to provide streaming ports for shell scripts, typically used for git hooks.
Features:
This project is like, uh, CGI, but much easier to install and start running.
- URL query passed as environment variables
- Request body piped to STDIN
- STDOUT piped to request body
Usage
npm i -g shellhub
and make a shellhubrc.json
in current directory:
{
"host": "0.0.0.0",
"port": 8888,
"stack": true,
"scripts": {
"/hello/world": {
"cwd": "/Users/harttle/src/shellhub/demo/",
"cmd": "hello-world.sh"
}
}
}
Start shellhub
with default shellhubrc.json
in current directory:
$ shellhub
Open http://localhost:8888/hello/world
in your favorite browser, or:
curl http://localhost:8888/hello/world
The output of hello-world.sh
will be streamed to stdout.
Options
Name | Default | Description
--- | --- | ---
host
| "localhost"
| The host to bind with
port
| 8080
| The port to bind with
stack
| true
| Whether or not print stack when there's an error
scripts
| {}
| Map from pathname to shell entry, the pathname can be arbitrary string
scripts.cwd
| undefined
| The work directory for the shell command, resolve based on the config file
scripts.cmd
| undefined
| The shell command to run, which will be passed to bash -c
Q&A
Can I use a config other than ./shellhubrc.json
?
$ shellhub -c path/to/your/shellhubrc.json
Where can I find the logs?
Logs are printed to STDOUT, with datetime and traceID:
[2016-11-20T14:39:25.475Z][002] PATH: /hello/world
[2016-11-20T14:39:25.475Z][002] CWD: /Users/harttle/src/shellhub/demo/
[2016-11-20T14:39:25.475Z][002] CMD: bash hello-world.sh
[2016-11-20T14:39:25.495Z][002]
[2016-11-20T14:39:25.495Z][002] STDOUT:
[2016-11-20T14:39:25.495Z][002] Hello, World!
[2016-11-20T14:39:25.495Z][002] Hi, Hell!
How to run this in background?
It's recommended to introduce a process manager like pm2.