自分のdotfiles(.vimrcとか.emacs.d)をGitHubのリポジトリにて管理しているんですが、cloneした後に中のファイルをホームディレクトリへ移動するのが面倒だなぁと常々思っていました。コマンド一つでホームディレクトリにシンボリックリンクとして展開できるようなものを作ってみたので、紹介します。
- repo: https://github.com/watilde/chest
- website: http://chestjs.com/
3ステップ
npmからchestコマンドのインストール
$ npm i -g chest
ホームディレクトリに移動して、リポジトリを .chest
という名前でgit clone
$ cd
$ git clone git@github.com:your/dotfiles.git .chest
$ ls
.chest
$ ls .chest
README.md .emacs.d .chestignore .git .gitignore .tmux.conf .vim .vimrc .zshrc
シンボリックリンクとして、.chest
内のファイルを展開する
$ chest open
.emacs.d .chest .tmux.conf .vim .vimrc .zshrc
これでおわりです。
その他
.gitディレクトリとか、展開したくないファイルがある
.chestignore
っていうファイルに記述すると、chest open
コマンドで展開されないようになります
.chestignore
README.md
.git
.gitignore
上書きはしない
ホームディレクトリに既に同名のファイルがある場合は、エラーを出してスキップします。上書きはしません。
$ ls
.chest .emacs.d
$ ls .chest
.emacs.d
$ chest open
File already exist: .emacs.d
Windows
たぶんサポートできたんですが、Windows持ってないので誰かテストしてくれると助かります。。
// 今月中に買う予定です
他の使い方について
展開したファイルを元に戻したり、ファイルを追加する機能などもあります。詳細は-h
にて。
$ chest -h
Usage: chest <command>
Commands:
put [files...] Put specified config file in the chest
take [files...] Take specified config file from the chest into the project root
list Show list of config files in the chest
open Place config files from the chest into the project root as symbolic links
close Remove symbolic links created by "open"
Options:
-h, --help output usage information
-V, --version output the version number
実は2年くらい前に作ったコマンドなんですが、自分のdotfilesの管理と相性が良さそうだったので .chestignore
の機能を追加してみた感じでした
http://qiita.com/t-sato/items/b09cc96a67200a451e1c#2-4