👋

zinit で cli ツールを管理してみた

2022/12/03に公開

この記事は mirko-san のアドベントカレンダー Advent Calendar 2022 の 12月 3日の記事です。

利用している cli ツールをテキスト管理したい

こんにちは。
みなさんは Zenn を読むような開発者なわけですから、もちろん日ごろ色々な cli ツールを利用していることかと思います。
それらのインストールを色々な方法で行っていないでしょうか?

sudo apt install <name>
go get <name>
cargo install <name>

などなど…。

私はいつも何も考えず「 Getting start に書いてあるしな~」の気持ちでどんなコマンドもホイホイ打ってきましたが、あるときふと思いました。
「どのコマンドをどんな方法でインストールしたか覚えてないな???🤔🤔🤔」
と…。

これだと新しく環境を構築したときに困ってしまいますよね。

まあべつに

which <command>

なりでどこに格納されているか見るなり、 apt のリストを見るなりしたら大抵の場合分かるんですけども。
そんなのエンジニア way じゃないじゃん???
なんでもテキスト管理したい!そんな気持ちが産まれることもありますよね。
ということで zinit での管理を試してみることにしました💪
この記事では zinit での cli ツールの管理の使い心地を紹介します。

zinit のインストール

https://github.com/zdharma-continuum/zinit

zinit をインストールすると以下のようなコードが ~/.zshrc に追加されました。

### Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
        print -P "%F{33} %F{34}Installation successful.%f%b" || \
        print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
    zdharma-continuum/zinit-annex-as-monitor \
    zdharma-continuum/zinit-annex-bin-gem-node \
    zdharma-continuum/zinit-annex-patch-dl \
    zdharma-continuum/zinit-annex-rust

### End of Zinit's installer chunk

とりあえずヨシ。

zinit で自作コマンドのインストールをしてみる

ここからは私の自作コマンドである mstanzaku のインストールを試みてみます。

https://twitter.com/mirko_960/status/1544705380038496261?s=20&t=yLNhlmowANn1TC326J671A

もろもろ zinit の README を解読したところ、以下のように書いたら mtanzaku コマンドが使えるようになりました。

# mtanzaku
zinit ice as"program" from"gh-r" \
    pick"mtanzaku" \
    bpick"*x86_64-unknown-linux-gnu*"

zinit light mirko-san/mtanzaku

Github release のコードを使う場合は zinit ice を駆使していく感じになりそうです。

所感

zinit ice はかなりオプションが豊富でした。
どんなケースでも対応できそうな凄みを感じるので、細かいエッジケースに悩まされるよりすべてを一つのツールで管理したい場合は、良い選択しかもしれません。

ただ、若干記法の読みにくさは感じます。定期的に書かないと細かいお作法を忘れそう😢

さいごに

mirko-san のアドベントカレンダー Advent Calendar 2022 の 12月 4日の記事では afx での管理を試します!
cli ツールのテキスト管理モチベがある方はぜひ明日も記事を読んでくれると嬉しいです🤗

GitHubで編集を提案

Discussion