#wasm-plugin #build #wasm-build #wasm-binary #wasm #command-line #cli

app wasmo

一个用于创建和构建 WASM 二进制的 CLI 工具

24 个版本 (稳定版)

1.3.0 2024 年 6 月 25 日
1.2.1 2024 年 5 月 29 日
1.1.0 2024 年 3 月 25 日
0.2.2 2023 年 12 月 6 日
0.2.1 2023 年 11 月 30 日

#242 in 命令行工具

Download history 500/week @ 2024-04-24 84/week @ 2024-05-01 43/week @ 2024-05-08 168/week @ 2024-05-29 131/week @ 2024-06-05 34/week @ 2024-06-12 84/week @ 2024-06-19 50/week @ 2024-06-26 69/week @ 2024-07-24 16/week @ 2024-07-31

每月 85 次下载

MIT/Apache

115KB
1.5K SLoC

wasmo

一个 MAIF 开源项目

Wasmo CLI 将 WASM 带到您的架构中

Wasmo CLI 可以与 Docker Wasmo 服务器镜像 的功能结合使用,以本地和远程构建 WASM 二进制文件。

安装

可以使用以下 Cargo 命令安装和编译此项目

$ cargo install wasmo
or
$ brew tap maif/wasmo
$ brew install wasmo

此外,还有在 CI 上构建的 预编译工件 可供下载。

可以使用以下命令确认安装

$ wasmo --version

可以使用以下命令探索子命令

$ wasmo help

核心命令

wasmo CLI 内部包含多个子命令,用于处理 wasm 模块

工具 参数 描述
wasmo config set path | server | clientId | clientSecret 使用要存储配置文件的路径和构建期间要达到的服务器全局配置 CLI。这些参数是可选的,可以在运行构建命令时传递。
wasmo config get 从配置的路径文件或从 $HOME/.wasmo
wasmo config reset 清除配置并重置为默认设置。默认文件路径配置将是 $HOME/.wasmo
wasmo init language | product | product_template | template | name | path 将 WASM 插件初始化到指定路径。您可以选择许多模板之一,包括javascript/typescript (js/ts),Open Policy Agent (opa),Rust 或 Golang (go)。
wasmo build path | host | server | clientId | clientSecret 通过将内容发送到远程或本地 Wasmo 服务器来构建插件。一旦构建完成,WASM 二进制文件将下载并保存在插件文件夹中。

快速入门

wasmo init --name=my-first-plugin --template=js
wasmo build --host=OneShotDocker --path=my-first-plugin

然后打开您的 my-first-plugin 文件夹的内容。您应该会找到名为 my-first-plugin-1.0.0.wasm 的生成WASM二进制文件。

指定语言、产品和产品模板以创建插件

在新版本中,您应通过指定要使用的语言、目标产品和模板来创建插件。

wasmo init --name=my-first-plugin --language=js --product=otoroshi --product_template=ACCESS_CONTROL

产品模板参数接受多个值

  • REQUEST_TRANSFORMER:使用wasm插件转换请求内容
  • RESPONSE_TRANSFORMER:使用wasm插件转换响应内容
  • ACCESS_CONTROL:将路由访问委托给wasm插件
  • BACKEND:此插件可以用作后端使用wasm插件
  • ROUTE_MATCHER:此插件可以用作路由匹配器使用wasm插件
  • SINK:使用wasm插件处理未匹配的请求
  • PRE_ROUTE:此插件可以用作在预路由阶段使用wasm插件

您还可以创建一个Izanami插件

wasmo init --name=my-first-plugin --language=js --product=izanami

目前,Izanami没有提供任何模板。

如果您想从头开始,不针对任何产品

wasmo init --name=my-first-plugin --language=js

或选择模板

现在,您可以选择通过在创建命令中添加 --template=[template-name] 来从模板启动一个新插件。

如果您不传递模板,Wasmo将列出可用的模板。它们按产品分类

  • 空模板: jstsopagorust
  • Otoroshi模板: otoroshi_gootoroshi_rustotoroshi_opaotoroshi_tsotoroshi_js
  • Izanami模板: izanami_jsizanami_goizanami_rustizanami_opaizanami_ts
wasmo init --name=my-first-plugin --template=[template-name] --path=[output-directory]

使用这些模板中的任何一个运行此命令将在指定的输出目录(或当前目录,如果省略)内创建一个名为 my-first-plugin 的目录。在该目录内,它将生成具有预填充插件名称的元数据文件的初始项目结构。

创建生产WASM二进制文件

wasmo build 开始构建您的插件WASM二进制文件的过程。在插件目录中将是您的WASM二进制文件和源代码。

您有两种方式来构建您的插件

假设我们想在本地构建我们的 my-first-plugin。输入 wasmo build --host=OneShotDocker --path=my-first-plugin 开始构建。

让我们解释这三个参数

  • path 参数明确用于表示要构建的插件
  • host 指示使用的Wasmo服务器类型。实用的方法是使用 DockerOneShotDocker,因为它可以防止通过在你的本地Docker中部署一个新的Wasmo容器来安装Wasmo服务器。最后一个可能值是 Remote,并可以用来通过URI指定远程Wasmo服务器。

配置您的配置文件

wasmo config get
wasmo config reset
wasmo config set <key>=<value>

注意:此命令不了解工作区。

描述

wasmo从命令行、环境变量、.wasmo 文件以及在某些情况下直接从构建命令中获取其配置。

可以使用 wasmo config 命令来更新和编辑用户和全局 wasmo 文件的 内容。

子命令

set

wasmo config set <key>=<value>

将配置键设置为其提供的值。

如果省略了值,则将其设置为空字符串。

可用的键有

  • path:配置 wasmo 配置将存储的路径
  • server:构建您的插件的 Wasmo 服务器(期望为 URL 格式值)
  • clientId:Basic 和 Otoroshi Auth 中使用的客户端 ID
  • clientSecret:Basic 和 Otoroshi Auth 中使用的客户端密钥

您还可以手动编辑配置文件。在这种情况下,以下值是

  • path = WASMO_PATH
  • server = WASMO_SERVER

get

wasmo config get

显示所有配置设置。

reset

wasmo config get

使用默认设置重置配置文件。自定义用户 .wasmo 文件将不会被删除。

许可协议

本项目采用 Apache 2.0 许可协议,附加 LLVM 异常。

贡献

除非您明确说明,否则您提交给本项目以供包含在内的任何贡献,根据 Apache-2.0 许可协议定义,应按照上述方式许可,不附加任何额外条款或条件。

依赖项

~14-27MB
~381K SLoC