Pythonで簡単なコマンドラインツールを作ってみた その2 dotfiles編

2016年12月18日日曜日

dotfiles Python

dotfiles

前回 は仮想マシンの準備まで行ったので、今回はローカルの設定を整えます。

dotfilesはgithubとかで管理しておくと良いようです。ただ、今のところ私はgit管理していません。この先、gitで管理するなら、Vagrantfileと同じディレクトリにgit cloneするのが良いかなと思っています。私はホスト側でgitの操作を行うようにしているので、共有フォルダを使うと便利なのです。

dotfilesにはdeploy.shとinitialize.shを用意しています。構成は以下の通り。.vimと.tmux.confを管理しています。.zshrcは管理していません。今はoh-my-zshのインストール時に、zshrc.zsh-templateから作れば良いかなと思っています。

dotfiles_tree

deploy.sh

よくあるタイプのdeployです。.hogeという名前のディレクトリやファイルへのリンクを、HOMEに作成します。

#! /bin/sh
cd `dirname $0`
DOT_DIRECTORY=`pwd`

for f in .??*
do
  [[ ${f} = ".git" ]] && continue
  [[ ${f} = ".gitignore" ]] && continue
  ln -snfv ${DOT_DIRECTORY}/${f} ${HOME}/${f}
done
echo -e "\e[32mDeploy dotfiles complete!\e[m"

initialize.sh

HOMEのdotfilesがリンクか(≒deployが行われたか)を確認してからインストール処理を行います。インストールの方針としては、アンインストールしてから再インストールです。initializeを行えば、初期化された環境が準備されるイメージ。また、Vagrantfileのprovisionで行っているoh-my-zshやpyenvのインストールも、こちらで行えば良いかなと今は考えています。

#! /bin/sh
cd `dirname $0`

for f in .??*
do
  [[ ${f} = ".git" ]] && continue
  [[ ${f} = ".gitignore" ]] && continue
  if [ ! -L ${HOME}/${f} ]; then
    echo -e "\e[31mPlease run deploy.sh!\e[m"
    exit 1
  fi
done

# dein
rm -rf ~/.vim/dein
mkdir ~/.vim/dein
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.vim/dein
rm ./installer.sh

echo -e "\e[32mInitialize dotfiles complete!\e[m"

まとめ

dotfilesはユーザの環境を準備するもの、というイメージです。ユーザ個別でインストールするもは、ここにまとめておくのが良いのではないでしょうか。次回はpyenvを使った開発環境とテスト環境の分離について書こうと思います。