WASM plugins for proto, managed as a Rust monorepo with moon.
| Plugin | Package | Locator |
|---|---|---|
| HK | hk |
github://hebilicious/proto-plugins/hk |
| Nushell | nu |
github://hebilicious/proto-plugins/nu |
| OCaml | ocaml |
github://hebilicious/proto-plugins/ocaml |
Add one or more plugins to .prototools:
[plugins]
hk = "github://hebilicious/proto-plugins/hk"
nu = "github://hebilicious/proto-plugins/nu"
ocaml = "github://hebilicious/proto-plugins/ocaml"
[tools.hk]
version = "1.46.0"
[tools.nu]
version = "0.112.2"
[tools.ocaml]
version = "5.4.1"
Or add them explicitly:
proto plugin add hk github://hebilicious/proto-plugins/hk
proto plugin add nu github://hebilicious/proto-plugins/nu
proto plugin add ocaml github://hebilicious/proto-plugins/ocaml
proto install
moon run proto-plugins:fmt proto-plugins:test proto-plugins:build
Run a plugin-specific Docker e2e test:
moon run hk:e2e
moon run nu:e2e
moon run ocaml:e2e
This repository includes hk configuration in hk.pkl.
cargo install hk
hk install --global
After the global install, hk is a no-op outside repositories that contain an hk.pkl.
Releases are handled by release-plz.
Each plugin is versioned independently and uses monorepo tags matching proto’s GitHub locator rules:
nu-vX.Y.Zocaml-vX.Y.Zhk-vX.Y.ZMerging normal changes into main opens or updates the release PR when package versions need to change. The release workflow publishes any package version that does not have a matching monorepo tag, builds the matching WASM plugin, attaches the .wasm and .sha256 assets to the GitHub release, and leaves Cargo publishing disabled.