uki00a.github.io

rhysd/dotfilesを使ってdotfilesリポジトリの管理を楽にする

#vim #vscode

はじめに

dotfilesリポジトリの管理をシェルスクリプトからrhysd/dotfilesに移行しました。

この記事ではrhysd/dotfilesを使ってdotfilesリポジトリを管理するについて記載します。

rhysd/dotfilesとは?

dotfilesリポジトリの管理を楽にしてくれるツールです。

以下の作業を自動化してくれます:

  • 設定ファイルに対するシンボリックリンクの作成
  • シンボリックリンクの削除

インストール

以下のいずれかの手段でインストールできます

  • go getを使う
  • Releasesページからダウンロードする

dotfilesリポジトリのクローン

ドキュメントによると、以下のコマンドでcloneできるようです。

# github.com/uki00a/dotfilesをクローンする
$ dotfiles clone uki00a

筆者はghqを使っているため、以下のコマンドでdotfilesリポジトリをcloneしました。

$ ghq get https://github.com/uki00a/dotfiles.git

基本的な使い方

基本的には、cloneしてきたリポジトリへ移動し、以下のコマンドを実行するだけです。 これにより、シンボリックリンクの作成が自動化されます。

$ dotfiles link

また、ドライランにも対応しています。 以下のコマンドを実行することで、どのファイルに対してシンボリックリンクが作成されるかを確認することができます。

$ dotfiles link --dry
No repository was specified nor $DOTFILES_REPO_PATH was not set. Assuming current repository is a dotfiles repository.

Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/vim' -> '/home/uki00a/.config/nvim'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/vim' -> '/home/uki00a/.vim'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/vscode/keybindings.json' -> '/home/uki00a/.config/Code/User/keybindings.json'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/vscode/settings.json' -> '/home/uki00a/.config/Code/User/settings.json'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/.agignore' -> '/home/uki00a/.agignore'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/.tmux.conf' -> '/home/uki00a/.tmux.conf'
Exist: '/home/uki00a/ghq/github.com/uki00a/dotfiles/.vimrc' -> '/home/uki00a/.vimrc'

カスタムマッピングを定義する

rhysd/dotfilesは、src/mappings.goにて、シンボリックリンクを作成すべきファイルを管理しています。 ここで定義されている設定ファイルについては、特に設定をしなくとも、dotfiles linkを実行するだけでシンボリックリンクの作成が自動化されます。

しかし、src/mappings.goで定義されていない設定ファイルについては、自身でマッピングを定義する必要があります。

まず、.dotfilesディレクトリを作成し、このディレクトリ内に自身のOS環境に応じて以下のファイルを作成します。

  • mappings_linux.json (Linux環境向け)
  • mappings_darwin.json (Mac OS環境向け)
  • mappings_windows.json (Windows環境向け)
  • mappings_unixlike.json (LinuxまたはMac OS共通)
  • mappings.json (全OS共通のマッピング情報を定義する)

筆者はLinuxを使用しているため、以下のような内容で.dotfiles/mappings_unixlike.jsonを作成しました。

{
  "vim": ["~/.config/nvim", "~/.vim"],
  "vscode/settings.json": "~/.config/Code/User/settings.json",
  "vscode/keybindings.json": "~/.config/Code/User/keybindings.json"
}

デフォルトでは、rhysd/dotfilesはvscodeやNeovimの設定ファイルを認識しないため、それらに関するマッピング情報を定義しています。

この状態でdotfiles linkを実行すると、vscodeやNeovimの設定ファイルに対するシンボリックリンクが作成されるようになります。

シンボリックリンクの削除

以下のコマンドを実行すると、rhysd/dotfilesによって作成されたシンボリックリンクが削除されます。

$ dotfiles clean

おわりに

この記事ではrhysd/dotfilesの使い方について解説しました。 このツールを使うことでシンボリックリンク等の作成が自動化されるため、とても便利だと思いました。 興味があれば、ぜひ使ってみてください。