#wasm-component #warg #registry #package #command-line #command-line-interface #publish

bin+lib warg-cli

Warg 注册表命令行界面

13 个版本 (7 个重大更新)

0.7.0 2024 年 5 月 16 日
0.5.0 2024 年 5 月 8 日
0.4.1 2024 年 3 月 7 日
0.2.0 2023 年 10 月 20 日
0.0.0 2023 年 1 月 31 日

974WebAssembly

每月 27 次下载

Apache-2.0 WITH LLVM-exception

475KB
11K SLoC

WebAssembly 注册表(Warg)

一个 Bytecode Alliance 项目

Warg 协议、客户端和服务器引用实现,用于分发 WebAssembly 组件和接口 以及核心模块。

build status Crates.io version Download docs.rs docs

概述

此存储库包含 Warg 协议的参考实现、客户端库、服务器和 CLI。

可以使用 Warg 客户端和服务器将 WebAssembly 组件分发到各种组件工具。

请参阅 介绍 了解设计决策和范围。

先决条件

安装

安装或升级 warg CLI

cargo install warg-cli

安装或升级参考实现服务器

cargo install warg-server

入门

运行服务器

在运行服务器之前,设置 WARG_OPERATOR_KEY 环境变量

export WARG_OPERATOR_KEY="ecdsa-p256:I+UlDo0HxyBBFeelhPPWmD+LnklOpqZDkrFP5VduASk="

WARG_OPERATOR_KEY 是服务器操作员的私钥。

目前,这是通过环境变量获取的,但很快将通过命令行参数或与系统密钥环的集成来获取。

使用 cargo 运行服务器

mkdir content
cargo run -p warg-server -- --content-dir content

在此创建的 content 目录是服务器将存储包内容的地方。

注意:目前服务器仅在内存中存储其状态,因此当服务器重新启动时将丢失。将在不久的将来添加持久层。

设置客户端

首先配置客户端以使用本地服务器的 URL

warg config --registry http://127.0.0.1:8090

这创建了一个配置文件 $CONFIG_DIR/warg/config.json;该配置文件将指定要使用的家庭注册表URL,这样就不必为每个命令指定 --registry 选项。

客户端下载的数据默认存储在 $CACHE_DIR/warg

接下来,创建一个新的签名密钥以发布软件包

warg key new 127.0.0.1:8090

新签名密钥将存储在您的操作系统的密钥存储中,并在发布到注册表时用于签名软件包日志条目。

发布软件包

可以通过运行以下命令初始化一个新的软件包:

warg publish init example:hello

这将在 example 命名空间中创建一个名为 hello 的新软件包。

可以通过运行以下命令发布软件包的某个版本:

warg publish release --name example:hello --version 0.1.0 hello.wasm

这会发布一个名为 example:hello 且版本号为 0.1.0 的软件包,内容来自 hello.wasm

或者,可以将上述步骤合并为单个发布操作

warg publish start example:hello
warg publish init example:hello
warg publish release --name example:hello --version 0.1.0 hello.wasm
warg publish submit

在此,初始化软件包和发布版本 0.1.0 创建的记录作为同一事务的一部分。

使用 warg publish abort 命令来中止挂起的发布操作。

管理软件包权限

注意:软件包权限系统仍在开发中。

您可以使用 warg publish grant 子命令向另一个公钥授予权限

warg publish grant --name example:hello ecdsa-p256:ABC...

您可以使用 warg key info 子命令获取您自己的公钥。

默认情况下,都授予了 publishyank 权限。这可以通过 --permission 标志进行修改。

类似地,可以通过 warg publish revoke 撤销权限。请注意,在撤销权限时,密钥通过 ID(指纹)进行识别

warg publish revoke --name example:hello sha256:abc...

重置和清除本地数据

要重置注册表的本地区域软件包日志数据

warg reset

要清除所有注册表下载的软件包内容

warg clear

贡献

这是一个 Bytecode Alliance 项目,并遵循 Bytecode Alliance 的 行为准则组织行为准则

获取代码

您将使用 git 克隆代码

git clone https://github.com/bytecodealliance/registry

测试更改

理想情况下,应该为所有更改编写测试。

运行 warg-server 内存实现的测试

cargo test --workspace

运行 warg-server 的 Postgres 实现的测试

docker run -d --name postgres-test -e POSTGRES_PASSWORD=password -p 5433:5432 postgres
diesel database setup --database-url postgres://postgres:password@localhost:5433/test-registry --migration-dir crates/server/src/datastore/postgres/migrations
WARG_DATABASE_URL=postgres://postgres:password@localhost:5433/test-registry cargo test --features postgres -- --nocapture

您可能需要首先安装 Docker 和具有 Postgres 功能的 Diesel CLI

cargo install diesel_cli --no-default-features --features postgres

提交更改

此存储库的更改通过拉取请求(PR)管理。每个人都欢迎提交拉取请求!我们将在最多几天内审查或回复。

代码格式化

代码必须使用当前Rust稳定版本的 cargo fmt 命令进行格式化。这将在CI中进行检查。

持续集成

该存储库的持续集成相对重要。它测试了Windows、macOS和Linux上的更改。

依赖项

~25–40MB
~671K SLoC