1.0.0 • Published 6 years ago
shellhub v1.0.0
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.