8 个版本

0.1.7 2024年1月5日
0.1.6 2023年3月10日
0.1.5 2023年2月12日

292操作系统 分类中

Download history 11/week @ 2024-03-30 4/week @ 2024-04-06

每月 53 次下载

MIT/ApacheGPL-3.0-only

25KB
298

Crates.io Workflow Status

binswap-github

从 GitHub 下载和交换二进制文件

用法

binswap 使用与 cargo-binstall 相同的基础设施来确定最新二进制文件存储的位置。 binswap-github 是专门为此目的而设计的后端。它使用 GitHub 发布版来下载支持的目标的二进制文件,然后将它们下载到指定位置,或者可选地与当前执行的二进制文件交换。

这对于在包管理器之外分发二进制文件或在用户预期不会安装 Rust 的环境中尤其有用。使用此crate,可以将更新机制捆绑到分发二进制文件中。

示例

以下示例从 GitHub 下载最新的 ripgrep 版本,并将其与当前执行的二进制文件交换。这里添加了 .dry_run(true) 来模拟执行,但不进行更新。

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    binswap_github::builder()
        .repo_author("BurntSushi")
        .repo_name("ripgrep")
        .asset_name("ripgrep")
        .bin_name("rg")
        .dry_run(true)
        .build()?
        .fetch_and_write_in_place_of_current_exec()
        .await?;

    Ok(())
}

以下操作与上述相同,但只是将生成的二进制文件写入新文件。

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    binswap_github::builder()
        .repo_author("BurntSushi")
        .repo_name("ripgrep")
        .asset_name("ripgrep")
        .bin_name("rg")
        .dry_run(true)
        .build()?
        .fetch_and_write_to("./rg")
        .await?;

    Ok(())
}

许可证

许可证为以下之一

由您选择。

贡献

除非您明确表示,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,都应如上所述双重许可,不附加任何额外条款或条件。

依赖

~32–69MB
~1.5M SLoC