dry-run と GitHub Actions でメンテしている dotfiles を mise に寄せた
はじめに 私の dotfiles では、ローカルの dry-run と GitHub Actions で、設定の変更を確認できるようにしています。dotfiles の設定適用にはスクリプトを使っていたのですが、手を入れるうちにスクリプトとテストコードが増えてきました。 そこで、シンボリックリンクの作成・解除や、パッケージ・開発ツールの導入を mise bootstrap に寄せました。 この記事では、もともとスクリプトで行っていた処理と、mise に移したあとの設定やコマンドを紹介します。 1. もともとはスクリプトで導入・解除していた 当初、dotfiles のセットアップは PC のリプレイス時などに行う程度で、処理も単純でした。多機能な mise を使うとかえって構成や運用が複雑になると考え、install / uninstall 用のスクリプトを書いていました。やがて動作確認もしたくなり、dry-run や CI の整備にも手を広げました。 その結果、スクリプトやテストコードが増え、想定より構成が複雑になっていきました。シンプルにしたいと考えていたところで mise bootstrap を知り、それまでスクリプトで行っていた導入・解除の処理を任せることにしました。 2. dotfiles の配置とツールの導入を mise bootstrap にまとめる mise bootstrap は、[dotfiles]、[bootstrap.packages]、[tools] などの設定をまとめて扱います。dotfiles だけを操作するには、mise dotfiles を使えます。 2-1. シンボリックリンクの配置先を [dotfiles] に書く mise.toml の [dotfiles] に、どのファイルをどこへ配置するかを記述します。下記は一例です。 [dotfiles] # "<target>" = { source = "<リポジトリをルートとした相対パス>", mode = "<symlink/シンボリックリンクなど指定したいモード>" } "~/.dotfiles" = { source = ".", mode = "symlink" } "~/.bashrc" = { source = ".bashrc", mode = "symlink" } "~/.bash_profile" = { source = ".bash_profile", mode = "symlink" } "~/.gitconfig" = { source = ".gitconfig", mode = "symlink" } "~/.config/mise/config.toml" = { source = "mise.toml", mode = "symlink" } 各エントリに mode = "symlink" を明示して、シンボリックリンクで配置するようにしています。たとえば、~/.bashrc にはリポジトリ内の .bashrc へのリンクを作ります。リンクの作成・解除は mise に任せるので、dotfiles 側では配置先の設定をメンテすることになります。 ...