dotfilesをgitで管理するようにした

github.com

dotfilesをgitで管理してなかったのでしてみたいという気持ちになって、置いてみた。

参考にしたのは

このあたり。

あとgithubで色んなdotfilesリポジトリを眺めたりした。

上の記事読んだらなんとなくわかってくるけど、どうやらイケてるのは分厚いシェルスクリプトを組んで1コマンドで全自動構築らしいけど、自分はデプロイ(シンボリックリンクを張る)だけにした。シェルコマンドよくわかってないし、僕は別にMac買い替えたりOSアプデするときクリーンインストールしない派なので、自動化は逆にコストになる気がした(というか書けない)。

なんか専門用語があって、

っぽい。

ダウンロード

ダウンロードはなんか独自ドメインに紐付けて少ないタイプ数でダウンロードできるようにしたいみたいな感じだけど、ダウンロード頻度高くないだろうし取得アドレス変わる可能性がダルいから普通にgit cloneもしくはzipで落とせばOKということにした。

デプロイ

install.sh

作成したのはこれで、

DOT_DIRECTORY="${HOME}/dotfiles"
SPECIFY_FILES="Brewfile" # 複数ファイルは""の中に半角スペース空けで入力しましょう

# ドットファイルとドットファイル以外の特定ファイルを回す
for f in .??* ${SPECIFY_FILES}
do
  # 無視したいファイルやディレクトリを追加
  [[ ${f} = ".git" ]] && continue
  [[ ${f} = ".gitignore" ]] && continue
  [[ ${f} = ".gitmodules" ]] && continue
  [[ ${f} = ".DS_Store" ]] && continue
  [[ ${f} = ".travis.yml" ]] && continue
  ln -snfv ${DOT_DIRECTORY}/${f} ${HOME}/${f}
done
echo $(tput setaf 2)Deploy dotfiles complete!. ✔︎$(tput sgr0)

ほとんどコピペでokamosさんのものを頂戴した。Homebrewで管理してるアプリもdotfilesリポジトリに一緒に含めたかったので、こういうBrewfileみたいなドットファイル以外の形式だけど管理したいしシンボリックリンク張りたいやつはを別途明示できるようにした。シェルスクリプトわからんので調べて、.??*${SPECIFY_FILES}をこう書けばよいということがわかった。

SPECIFY_FILES="Brewfile examplefile1 examplefile2"

みたいに半角スペース開けて書けば特定明示ファイルは増やせる。
ここでは配列にしていないけど、

SPECIFY_FILES=(hoge huga piyo)

for f in .??* ${SPECIFY_FILES[@]}
do
  # 処理
done

みたいなのでもいけたかもしれない。

イニシャライズ

これに関してもダウンロードと同様に自動化していない。シェルスクリプトよくわからんけどここが一番膨らみそうでめっちゃ書かないといけなさそうだったのでスルー。なんかOSのバージョンアップとかツール類の勝手が変わってシェルスクリプトを修正しなくちゃ動かなくなってもすぐ対応できそうにない気がしたので。


とりあえずgitで管理はできるようにしたので、わかりやすくて管理はしやすく保守性と汎用性は上がったような気がする。

ドットファイル見てたらzprezto使ってるけどzplugで管理するかfishにしようかみたいな気持ちになってきた。シェルよくわかってないから触りだすとわからないことが多すぎるような気がしている。