#cargo #lift #auditing #version #hosting #io #mirroring

bin+lib cargo-lift

用于托管、镜像和审计 Crates 的工具

1 个不稳定版本

0.0.0 2023 年 10 月 17 日

#3#lift

AGPL-3.0-only

33KB
448

注意! Lift 正在早期开发中,本文件中描述的许多或所有功能尚未实现...

用于托管、审计和镜像来自 cargocrates.io 的 Crates。

使用方法:审计 Crates

Lift 将多个代码检查和审计工具整合为一个命令(cargo lift check

  • cargo fmt --check仅本地),检查代码格式的一致性。

  • cargo clippy仅本地),检查代码中的“异味”、简单错误和可维护性问题。

  • cargo geiger仅本地),检查代码中使用 unsafe 关键字的用法。

  • cargo audit,通过 RustSec 咨询数据库 检查与 Crates 或其依赖项相关的安全咨询。

  • cargo vetcargo crev,通过分布式的人证代码审查检查与 Crates 或其依赖项相关的 失败 审计。

审计本地的 Cargo.toml

要审计包含 Cargo.toml 文件的本地 Crates 或 工作区,请运行

cargo lift check

要跳过审计 Cargo.toml 文件的非 Workspace 依赖项(例如,所有第三方代码),请运行

cargo lift check --relaxed

当命令退出时,Lift 将打印一个报告,标记任何失败的 Cargo.toml(以及其依赖项,如果不使用 --relaxed)检查。

用法:镜像 crates.io

Lift 可以下载并托管(“镜像”)在 crates.io 上托管的任何 Crate 的副本。

镜像 crates.io 上的每个 Crate

警告:虽然 Lift 默认不会下载 crates.io每个 Crate 的 每个 版本,但它仍然会下载许多 Crate。此镜像操作可能会轻易耗尽您的网络带宽和磁盘空间!

要镜像整个 crates.io 索引,请运行

cargo lift mirror * --from crates.io

在此命令退出后,每个镜像的 Crate 都将在本地 Lift 存储库中可用。

如何选择镜像版本

对于每个 Crate,只保证镜像一个版本。在选择此版本时,Lift 将

  1. 优先选择通过 cargo lift check --relaxed 命令的版本。
  2. 优先选择未撤回的版本。
  3. 优先选择最新的(“最高”)版本。

Lift 将镜像一个 Crate 的额外版本,如果这些版本是满足另一个 Crate 的直接或间接(“传递”)依赖项所必需的。

默认情况下,Lift 会忽略任何无法通过 cargo lift check --relaxed 命令的 Crate,除非这些 Crate 是为了满足另一个 Crate 的传递依赖项而必需的。

crates.io 镜像一个 Crate

要镜像从 crates.io特定 Crate 及其所有直接和间接依赖项,请运行

cargo lift mirror [email protected] --from crates.io

在此示例中,tokio Crate 的 1.29.1 版本将从 crates.io 镜像,以及每个传递依赖项。

mirror 子命令接受通常在 Cargo-toml 中使用的 任何 版本字符串。例如,在上面的示例中,可以使用 * 代替 1.29.1,使 Lift 自动选择版本。

许可和贡献通知

除非另有说明,否则本项目版权所有(C)2023 Brandon Sanders [[email protected]],并许可在 AGPL-3.0-only 下。

当向此存储库提交贡献时,您授予此存储库的版权所有者非独占的、全球性的、免版税的许可,以制作、使用、销售、提供销售、进口以及以其他方式运行、修改和传播您“贡献版本”的内容,如 AGPL-3.0-only 许可的第 11 节中定义。

依赖关系

~18–31MB
~553K SLoC