🐡
Dotfiles 紹介
私の Dotfiles の気に入っている部分を紹介します。
Install & bootstrap
zsh bootstrap.zsh
一発ですべてがセットアップされます。
また、完全に新規の環境でも、'curl -sSL za.kuro.red/install.sh | sh' とするだけで環境が構築されます。
Installer
installers に入っているスクリプトが自動でインストーラとして実行されます。
Repo コマンド
概要
repo コマンドは、リポジトリ名から cd ディレクトリに cd し、ターミナルのタイトルをリポジトリ名にセットされます。
リポジトリは ghq で管理しています。ghq と peco を組み合わせるパターンも観られますが、その場合タイプ数が多くなるので、コマンドを自作しました。
機能
- repo [cd] NAME でリポジトリに移動します
- repo get URL で ghq get でリポジトリを移動した後、repo cd と同様の処理をします
使用例
$ repo dotfiles # リポジトリ名だけ指定
$ repo zakuro9715/dotfiles # 名前が被る場合は github.com やユーザー名をつけて指定
$ repo get github.com/github/hub # ghq get してから hub のリポジトリに移動
コード
set-title() {
title=$@
if [[ -z "$title" ]];
then
title="$(basename $(pwd))"
fi
echo -ne "\033]0;${title}\a"
}
find-repo() {
target="$(echo "/$1" | sed 's/\/\+/\//g')" # multi slash to single slash
ghq list -p | grep --color=never -E "$target$" | head -n1
}
cd-repo() {
repo=$1
dir=$(find-repo $repo)
if [[ "$dir" == "" ]]
then
echo "Repository $repo not found" >&2
return 1
fi
set-title "$(basename $dir)"
cd $dir
}
get-cd-repo() {
repo="$1"
dir="$(ghq get --silent -u $repo 2>&1 | grep -oE $(ghq root)/.+$)"
set-title "$(basename $dir)"
cd "$dir"
}
repo() {
mode="cd"
case "$1" in
"cd" ) shift ;;
"get" )
mode="get"
shift ;;
esac
if [[ -z "$1" ]];
then
echo "Usage: repo [get|cd] NAME" >&2
return 1
fi
case "$mode" in
"cd" ) cd-repo "$1" ;;
"get" ) get-cd-repo "$1" ;;
esac
}
微妙なところ
今のところ補完がありません。
Discussion