2个版本
0.3.1 | 2023年6月2日 |
---|---|
0.3.0 | 2023年4月11日 |
#1414 in WebAssembly
622 每月下载
在 2 crates 中使用
63KB
1.5K SLoC
描述
wit-deps
是一个简单的 WIT 依赖管理二进制文件和 Rust 库,用于管理您的 wit/deps
。它的主要目标是确保您的 wit/deps
中的内容与依赖清单(默认:wit/deps.toml
)和依赖锁定文件(默认:wit/deps.lock
)保持一致。
清单
依赖清单是一个将依赖名称映射到其源规范的 TOML 编码的表。在其最简单的形式中,源规范是一个包含具有 wit
子目录(包含 wit
文件)的目录树的 gzipped tarball 的 URL 字符串。
示例
# wit/deps.toml
# Use `wit-deps update` to pull in latest changes from "dynamic" branch references
clocks = "https://github.com/WebAssembly/wasi-clocks/archive/main.tar.gz"
http = "https://github.com/WebAssembly/wasi-http/archive/main.tar.gz"
messaging = "https://github.com/WebAssembly/wasi-messaging/archive/main.tar.gz"
sockets = "https://github.com/WebAssembly/wasi-sockets/archive/main.tar.gz"
sql = "https://github.com/WebAssembly/wasi-sql/archive/main.tar.gz"
# Pin to a tag
io = "https://github.com/rvolosatovs/wasi-io/archive/v0.1.0.tar.gz" # this fork renames `streams` interface for compatiblity with wasi-snapshot-preview1
# Pin a dependency to a particular revision and source digests. Each digest is optional
[keyvalue]
url = "https://github.com/WebAssembly/wasi-keyvalue/archive/6f3bd6bca07cb7b25703a13f633e05258d56a2dc.tar.gz"
sha256 = "1755b8f1e9f2e70d0bde06198bf50d12603b454b52bf1f59064c1877baa33dff"
sha512 = "7bc43665a9de73ec7bef075e32f67ed0ebab04a1e47879f9328e8e52edfb35359512c899ab8a52240fecd0c53ff9c036abefe549e5fb99225518a2e0446d66e0"
源规范也可以是一个具有以下字段的结构
url
- 与 URL 字符串相同的格式sha256
-(可选)URL 内容的 sha256 校验和的十六进制编码sha512
(可选)URL 内容的 sha512 校验和的十六进制编码path
- 包含 WIT 定义目录的路径
必须指定 url
或 path
(两者都支持字符串格式)
示例
# wit/deps.toml
mywit = "./path/to/my/wit"
[logging]
url = "https://github.com/WebAssembly/wasi-logging/archive/d106e59b25297d0496e6a5d221ad090e19c3aaa3.tar.gz"
sha256 = "4bb4aeab99e7323b30d107aab78e88b2265c1598cc438bc5fbc0d16bb63e798f"
sha512 = "13b52b59afd98dd4938e3a651fad631d41a2e84ce781df5d8957eded77a8e1ac4277e771a10225cd4a3a9eae369ed7e8fee6e26f9991a2caa7c97c4a758b1ae6"
用法
请注意,wit-deps
假设它完全控制 wit/deps
,因此它可以在任何时候删除和修改 wit/deps
的内容!
交互式
使用 wit-deps
或 wit-deps lock
通过 wit/deps.toml
清单和 wit/deps.lock
(如果不存在则创建)来填充 wit/deps
。
Rust
在您的项目的 build.rs
中使用 wit-deps::lock!
宏来自动锁定您的 wit/deps
。
有关更复杂用法的示例,请参阅crate文档
设计决策
wit-deps
默认情况下是懒惰的,只有在绝对必要时才会进行获取/写入。wit-deps
假设从 URL 获取的结果是确定的,即 URL 的 GET 请求domain.com
必须始终返回完全相同的内 容。注意,在这种情况下,您可以在您的清单条目中使用sha256
或sha512
字段来使缓存失效。
依赖项
~14-28MB
~457K SLoC