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:
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
./shellhubrc.json
?
Can I use a config other than $ 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.