symdot.sh (dotfilesのshスクリプト)をver 0.0.2にしました
symdot.shとはgitなどにあげたshスクリプトを簡単にシンボリックリンクを貼ったり剥がしたりするためのものです
最新のは
https://github.com/silenvx/dotfiles/
ここのどこかに置いてると思います
version 0.0.1との違い
- pretendの実装
どこにインストールされるか見れるようにした - HOME_DOTFILESで最後に\nをつけなくてもいいようになった
- candidateの実装
HOME_DOTFILESに書けそうな奴一覧をリストアップするようになった - それに伴いIGNORE_FILESにリストアップしたくないファイルを登録できるようにした
- autoの実装
candidateでリストアップしたファイルを自動でホームディレクトリにシンボリックリンクを貼るようになった - どうでもいいけど関数を使ってソースを少しだけ見やすくした
以下ソース
#!/bin/sh # 2012/06/17 UTF-8 LF # 現在のバージョン VERSION="0.0.2" # このファイルの場所 PWD=$(cd $(dirname ${0});pwd) # ホームディレクトリに張りたいファイル名を書く # 最初のところに改行を入れちゃうとcleanした時にホームディレクトリごと消滅したので注意 HOME_DOTFILES=".emacs .fbtermrc .fonts.conf .screenrc .tmux.conf .uim .vimperatorrc .vimrc .xinitrc .Xresources .zshrc" # 自動的に行うコマンドで無視したいファイル名やディレクトリ名を # grepの正規表現を使って書く # miscはホームディレクトリ以外にシンボリックリンクを張りたいファイルを置く場所(現在は未実装) IGNORE_FILES="^\.$ ^\.\.$ ^\.git$ ^README\.md$ ^symdot\.sh$ ^\.gitignore$ ^misc$" func_help(){ echo "${0##*/} version:${VERSION}" echo "--------------" echo "option" echo " help このヘルプを表示" echo " install シンボリックリンクを設置" echo " clean シンボリックリンクを削除" echo " pretend どこに何がインストールされるか表示" echo " candidate HOME_DOTFILESに追加できそうな候補を表示" echo " auto 候補のシンボリックリンクを設置" echo "--------------" echo "HOME_DOTFILESの影響を受けるオプション" echo " install clean pretend" echo echo "IGNORE_FILESの影響を受けるオプション" echo " candidate auto" } func_install(){ echo "${HOME_DOTFILES}"|\ while read TMP do echo "install ~/${TMP}" ln -s ${PWD}/${TMP} ~/${TMP} done } func_clean(){ echo "${HOME_DOTFILES}"|\ while read TMP do echo "clean ~/${TMP}" rm ~/${TMP} done } func_pretend(){ echo "${HOME_DOTFILES}"|\ while read TMP do echo "pretend ${PWD}/${TMP} -> ${HOME}/${TMP}" done } func_candidate(){ LS=$(ls -1a ${PWD}) for TMP in $(echo "${IGNORE_FILES}") do LS=$(echo "${LS}"|grep -ve ${TMP}) done echo "${LS}" } func_auto(){ func_candidate|\ while read TMP do echo "auto ~/${TMP}" ln -s ${PWD}/${TMP} ~/${TMP} done } if [ $# == "0" ];then func_help else if [ ${1} == "help" ];then func_help elif [ ${1} == "install" ];then func_install elif [ ${1} == "clean" ];then func_clean elif [ ${1} == "pretend" ];then func_pretend elif [ ${1} == "candidate" ];then echo "---candidate---" func_candidate elif [ ${1} == "auto" ];then func_auto else echo "unknown option argument: ${1}" fi fi