https://github.com/deislabs/hello-wagi-grain
An example of using the Grain language to write Wagi modules
https://github.com/deislabs/hello-wagi-grain
Last synced: 10 months ago
JSON representation
An example of using the Grain language to write Wagi modules
- Host: GitHub
- URL: https://github.com/deislabs/hello-wagi-grain
- Owner: deislabs
- License: mit
- Created: 2021-04-23T23:07:24.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-09-09T21:02:29.000Z (over 4 years ago)
- Last Synced: 2025-03-22T11:16:44.683Z (about 1 year ago)
- Size: 32.2 KB
- Stars: 5
- Watchers: 13
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Hello Wagi for the Grain Language
[Grain](https://grain-lang.org) is a new programming language that targets WebAssembly.
This repository provides a simple module that works with [Wagi](https://github.com/deislabs/wagi).
It illustrates how easy it is to write HTTP responders with Grain and Wagi.
This version is built on Grain 0.3, and relies on Grain 0.3's static compiler.
Grain is a rapidly evolving language, and this code may not work on other versions of Grain.
## Building
There is already a `hello.gr.wasm` binary checked in.
To build from source, [install Grain]()
and then use this command to compile:
```console
$ grain compile hello.gr
```
You can test your program with `grain` or `wasmtime`:
```console
$ wasmtime hello.gr.wasm --env USER=mbutcher hello
==== Environment: ====
USER=mbutcher
==== Args: ====
hello.gr.wasm
hello
```
When deploying to Wagi, you will want to add an entry like this in WAGI's route TOML:
```toml
[[module]]
route = "/hello-grain"
module = "/path/to/hello-wagi-grain/hello.gr.wasm"
```
After reloading or restarting Wagi, you can execute this module:
```
$ curl localhost:3000/hello-grain?hello=world
==== Environment: ====
REMOTE_ADDR=127.0.0.1
SERVER_PORT=80
SERVER_PROTOCOL=http
REMOTE_USER=
HTTP_ACCEPT=*/*
X_MATCHED_ROUTE=/hello-grain
SERVER_NAME=localhost:3000
HTTP_USER_AGENT=curl/7.64.1
SCRIPT_NAME=/Users/technosophos/Code/Grain/hello-wagi-grain/hello.gr.wasm
PATH_INFO=/hello-grain
REQUEST_METHOD=GET
AUTH_TYPE=
REMOTE_HOST=127.0.0.1
HTTP_HOST=localhost:3000
QUERY_STRING=
GATEWAY_INTERFACE=CGI/1.1
PATH_TRANSLATED=/hello-grain
SERVER_SOFTWARE=WAGI/1
CONTENT_LENGTH=0
CONTENT_TYPE=
X_FULL_URL=http://localhost:3000/hello-grain
==== Args: ====
/hello-grain
hello=world
```