proto-plugins

Monorepo for proto WASM plugins

0
0
0
1
Rust
public

proto-plugins

WASM plugins for proto, managed as a Rust monorepo with moon.

Plugins

Plugin Package Locator
HK hk github://hebilicious/proto-plugins/hk
Nushell nu github://hebilicious/proto-plugins/nu
OCaml ocaml github://hebilicious/proto-plugins/ocaml

Installation

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

Development

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

Hooks

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

Releases are handled by release-plz.

Each plugin is versioned independently and uses monorepo tags matching proto’s GitHub locator rules:

  • nu-vX.Y.Z
  • ocaml-vX.Y.Z
  • hk-vX.Y.Z

Merging 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.

v0.3.3[beta]