3 个版本
0.2.12 | 2022 年 8 月 5 日 |
---|---|
0.2.11 | 2022 年 8 月 3 日 |
0.2.10 | 2022 年 2 月 21 日 |
#2677 in 命令行工具
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