#github #github-api #binary #install #update #single #glob-pattern

应用程序 gitrel

GitHub 二进制管理器 - 通过 GitHub API 安装和更新单个二进制发行版

3 个版本

0.2.12 2022 年 8 月 5 日
0.2.11 2022 年 8 月 3 日
0.2.10 2022 年 2 月 21 日

#2677 in 命令行工具

MIT/Apache

78KB
2K SLoC

GitRel

GitHub 二进制管理器 - 通过 GitHub API 安装和更新单个二进制发行版

安装/更新

通过 Curl/Shell 脚本(推荐

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/izirku/gitrel/main/xtra/install.sh)"

通过 Cargo

cargo install gitrel

Linux 和 macOS 用户可能希望像更新其他管理二进制文件一样更新 gitrel,如果通过 Curl/Shell 脚本安装。只需将 gitrel 本身添加为已安装的包之一

gitrel install izirku/gitrel

用法

如果 repo 的名称与 user/org 相同,可以使用 缩写,因此,“gitrel install rust-analyzer” 等同于 “gitrel install https://github.com/rust-analyzer/rust-analyzer@*”。其中,“@*” 表示 最新版本

可以指定匹配发行版标签的 SEMVER,格式为 [repo/]user@SEMVER

在更新二进制文件时,gitrel(如果适用),将首先尝试更新到更新的兼容语义版本。它还将检查远程的 发布标签 发布日期与本地安装的日期进行比较。如果远程有较新的发布日期,gitrel 将下载并安装它。这对于安装和更新一些 滚动 发行版很有用,例如 rust-analyzer@nightly

通过 --asset-glob 指定的全局模式仅匹配资产文件名及其扩展名。因此,不允许使用 **/。另一方面,--entry-glob 指定的全局模式匹配归档中的完整路径,并且可以在此处使用 **/

基本安装示例

# install binary (specific tag)
gitrel install rust-analyzer@nightly

# install binary (latest release)
gitrel install gokcehan/lf

# install binary (match tag to a SemVer)
gitrel install https://github.com/JohnnyMorganz/StyLua@^0.11

高级安装示例

由于没有统一的命名发布工件的标准,自动匹配算法可能会失败。这就是为什么提供了一个手动匹配的逃生口。我们可以使用正则表达式和glob模式来匹配资产名称和存档条目。以下是一些示例

# force install binary, rename, use glob pattern asset match
gitrel install -fa "bbl-v*_osx" -r bbl cloudfoundry/bosh-bootloader

# install binary, strip, use RegEx pattern asset match
gitrel install -sA "^yq_darwin_amd64$" mikefarah/yq

# install binary, strip, use glob pattern match on asset and archive entry
gitrel install -sa "staticcheck_darwin_amd64.tar.gz" \
  -e "**/staticcheck" -r staticcheck dominikh/go-tools

有时需要在二进制安装后运行一个命令。例如,michaeleisel/zld(macOS上比ld更快的替代品)是动态链接到完整的XCode,并且对于只有CommandLine Tools的用户无法运行。

可以通过运行后安装命令来修复这个问题(目前仅在Linux/macOS上)

# note that env variable `$f` containing installed binary path is exported
gitrel install -fsa "zld.zip" \
  -p "/usr/local/bin" \
  -x 'install_name_tool -add_rpath /Library/Developer/CommandLineTools/usr/lib $f' \
  michaeleisel/zld

# or use ":bin:" which gets substituted as well
gitrel install -fsa "zld.zip" \
  -p "/usr/local/bin" \
  -x "install_name_tool -add_rpath /Library/Developer/CommandLineTools/usr/lib :bin:" \
  michaeleisel/zld

更新、卸载、信息和列表示例

运行update将尊重任何手动匹配、重命名、二进制剥离(Linux/macOS)和后安装命令(目前仅在Linux/macOS上),就像它们在install期间指定的那样。随后,如果从未二进制版本使用足够不同的打包方案,则update命令可能会失败。在这种情况下,强制重新安装该二进制文件(即gitrel install -f ...),提供新的模式匹配参数。

# update all installed binaries
gitrel update

# update a single binary
gitrel update bbl

# uninstall binaries
gitrel uninstall bbl yq

# get information about a release on GitHub
gitrel info izirku/gitrel

# list installed binaries
gitrel list

# list installed binaries, displaying installation path
gitrel list -w

注意:无论操作系统类型如何,二进制文件都“安装”在~/.local/bin~/bin目录下,如果存在。否则,将创建~/.local/bin目录,并将二进制文件放置在那里。

配置

配置文件存储在~/.config/gitrel目录中,无论操作系统类型如何。目前,它只存储了packages.json

免责声明

作者和贡献者对本软件使用或通过本软件安装的软件引起的任何问题概不负责。自行承担风险

依赖项

~23–39MB
~643K SLoC