Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beefsack/webify
Turn shell commands into web services
https://github.com/beefsack/webify
function serverless shell web
Last synced: 4 days ago
JSON representation
Turn shell commands into web services
- Host: GitHub
- URL: https://github.com/beefsack/webify
- Owner: beefsack
- License: mit
- Created: 2020-08-25T02:56:38.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2020-09-27T00:12:40.000Z (about 4 years ago)
- Last Synced: 2024-10-13T10:52:35.869Z (26 days ago)
- Topics: function, serverless, shell, web
- Language: Go
- Homepage:
- Size: 40 KB
- Stars: 957
- Watchers: 12
- Forks: 40
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- my-awesome-starred - beefsack/webify - Turn shell commands into web services (Go)
- awesome-rainmana - beefsack/webify - Turn shell commands into web services (Go)
- awesome-repositories - beefsack/webify - Turn shell commands into web services (Go)
README
webify
Turn functions and commands into web services
For a real world example, see [turning a Python function into a web
service](examples/python-function).## Overview
`webify` is a very basic CGI server which forwards all requests to a single
script. A design goal is to be as zero-config as possible.`webify` invokes your script and writes the request body to your process'
stdin. Stdout is then passed back to the client as the HTTP response body.If your script returns a non-zero exit code, the HTTP response status code will
be 500.## Installation
`webify` is available from the [project's releases page](https://github.com/beefsack/webify/releases).
On macOS, it can also be installed via [MacPorts](https://ports.macports.org/port/py-boltons/summary):
```bash
sudo port install webify
```## Usage
```bash
# Make a web service out of `wc` to count the characters in the request body.
$ webify wc -c
2020/08/25 12:42:32 listening on :8080, proxying to wc -c...
$ curl -d 'This is a really long sentence' http://localhost:8080
30
```### Official Docker image
The official Docker image is [beefsack/webify](https://hub.docker.com/r/beefsack/webify).
It can be configured using the following environment variables:
* `ADDR` - the address to listen on inside the container, defaults to `:80`
* `SCRIPT` - the command to execute, defaults to `/script`#### Mounting script and running official image
```
$ docker run -it --rm -p 8080:80 -v /path/to/my/script:/script beefsack/webify:latest
2020/08/25 04:27:46 listening on :80, proxying to /script...
$ curl -d 'Some data' http://localhost:8080
```#### Building a new image using official image as base
Create a `Dockerfile` like the following:
```
FROM beefsack/webify:latest
COPY myscript /script
```## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.Please make sure to update tests as appropriate.
## License
[MIT](https://choosealicense.com/licenses/mit/)