1.0.0 • Published 8 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:
$ shellhubOpen http://localhost:8888/hello/world in your favorite browser, or:
curl http://localhost:8888/hello/worldThe 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.jsonWhere 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.