#管理 #开发 #GitHub #环境 #别名 #工具 #版本

bin+lib vers

通过多环境安装和管理开发工具

9 个版本 (4 个重大更改)

0.5.0 2022年11月25日
0.4.0 2022年11月15日
0.3.1 2022年10月15日
0.3.0 2022年9月29日
0.1.1 2022年7月18日

#24 in #别名

MIT/Apache

76KB
1.5K SLoC

Vers

Vers 是一个命令行工具,旨在帮助管理您机器上的其他开发工具,支持从 GitHub 发布版进行安装(未来还将提供更多功能)。

入门指南

如果您已经安装了 Rust,则最快的安装方法是现在使用 cargo install vers。如果没有,请从 GitHub 发布版下载适用于您系统的最新版本。

使用以下命令设置您的 shell 环境:

# Shell can also be fish or zsh
$ vers env --shell bash >> ~/.bash_profile
export PATH="/Users/reynn/Library/Application Support/dev.reynn.vers/envs/global:$PATH"

安装您的第一个工具就像执行以下类似命令一样简单

# This will install the latest version of the GitHub CLI and alias it so you can call it using `gh`
# if no alias is provided the repository name is used
$ vers add cli/cli --alias gh
--> Installing tool cli/[email protected]

# You can use the --show (short: -S) flag to show a list of versions available and allows you to select one
$ vers add cli/cli --alias --show
--> Installing tool cli/[email protected]

Vers 有一个方法来自动检测适用于您系统的发布版中的资产,有时这会失败,因为文件命名没有标准化。要覆盖自动检测功能,请使用 --pattern (短:-p) 标志

# --pattern is a regular expression
$ vers add cli/cli --alias gh --file-filter '.+macos.+'

添加功能的最后一个重要事项是使用一个 --file-filter (短:-f),这在资产下载并提取后(或未提取)用于搜索生成的二进制文件。默认情况下,如果提供了别名或仓库名称,则为别名。

# --file-filter is also a regular expression
$ vers add jesseduffield/lazygit --alias lg --file-filter '^lg$'

由于仓库名称是 lazygit 但实际的二进制名称是 lg,因此需要提供过滤器,以便 vers 可以找到提取的二进制文件。

环境

支持多个环境,但仍然处于早期阶段。

# the --pre-release (short: -P) flag can be used to include pre release versions in the results
$ vers --env betas add cli/cli --alias gh-beta --pre-release

目录结构

 /Users/<USER>/Library/Application Support/dev.reynn.vers
├──  envs
│  ├──  global
│  │  └──  # symlinks here to the correct version of the tool under ../../tools
│  └──  global.json
└──  tools
   ├──  BurntSushi
   │  └──  RipGrep
   │     └──  13.0.0
   ├──  charmbracelet
   │  └──  glow
   │     └──  1.4.1
   ├──  ClementTsang
   │  └──  bottom
   │     ├──  0.6.8
   │     └──  nightly
   ├──  cli
   │  └──  cli
   │     ├──  2.9.0
   │     ├──  2.10.0
   │     └──  2.10.1
   ├──  digitalocean
   │  └──  doctl
   │     └──  1.75.0
   ├──  getzola
   │  └──  zola
   │     └──  0.15.3
   ├──  gohugoio
   │  └──  hugo
   │     └──  0.98.0
   ├──  jesseduffield
   │  └──  lazygit
   │     ├──  0.34
   ├──  junegunn
   │  └──  fzf
   │     └──  0.30.0
   ├──  k0sproject
   │  └──  k0sctl
   │     └──  0.13.0-rc.2
   ├──  lotabout
   │  └──  skim
   │     └──  0.9.4
   ├──  neovim
   │  └──  neovim
   │     ├──  0.7.0
   │     └──  nightly
   ├──  nushell
   │  └──  nushell
   │     └──  0.62.0
   ├──  ogham
   │  └──  exa
   │     └──  0.10.1
   ├──  sharkdp
   │  ├──  bat
   │  │  └──  0.21.0
   │  ├──  fd
   │  │  └──  8.3.2
   │  ├──  hexyl
   │  │  └──  0.9.0
   │  └──  hyperfine
   │     └──  1.14.0
   ├──  TomWright
   │  └──  dasel
   │     └──  1.24.3
   ├──  uutils
   │  └──  coreutils
   │     └──  0.0.13
   ├──  XAMPPRocky
   │  └──  tokei
   │     └──  12.1.2
   └──  zellij-org
      └──  zellij
         └──  0.29.1

依赖项

~38–54MB
~1M SLoC