Edited at

Zsh + peco + ghq で一工夫したらリポジトリへの移動とインポートがとても楽になった

More than 3 years have passed since last update.

ghq便利なんですが、サブコマンドいらないなと思って、ちょっとしたラッパーを書きました。

$ rでリポジトリ管理に必要なことがだいたい出来るのでよいです。



  • $ r (repository name) : そのリポジトリに移動


  • $ r : ghqでインポートしたリポジトリをpecoで選択


  • $ r [tab] : ghqでインポートしたリポジトリ一覧が補完される


  • $ r git@github.com:peco/peco.git : インポートしてなかったらインポートする

動く様子

下記の関数と補完を.zshrcに追加すれば動きます。

Zshの関数:

function repo(){

local result=""
local choice=""
local dest=""

if [ "$1" =~ "^(git|http)" ] ; then
ghq get $1
return
fi

if [ -z $1 ]; then
choice=$(ghq list --unique | peco)
if [ -z $choice ]; then
echo "No repo was chosen"
else
result=$choice
fi
else
result=$1
fi

dest=`ghq list --exact --full-path $result`

if [ "$dest" == "" ] ; then
echo "Not found"
else
cd $dest
fi
}

補完:

function _repo {

_values $(ghq list --unique)
}

compdef _repo repo

alias r='repo'

本当は$ rでインポートした後にそこに移動したいんだけど、URIのパースが面倒なのでやっていない。