Edited at

pecoで各プロジェクトのルートディレクトリを検索して、簡単に動作させるやつ

More than 5 years have passed since last update.


管理の面倒臭さと散らばってゆくファイルたち

Git

Vagrant

Docker

Gulp

Grunt

Chef

Guard

.

.

.

DevOpsやタスクランナーなどがフロントエンドやバックエンドエンジニアの中で流行っている昨今、いろんな場所にいろんなプロジェクトディレクトリが散らばってて管理に困ってませんか?

ぼくもそのひとりです。

いちいちそれぞれのプロジェクトのパスを覚えるのも面倒。。。

なので、この辺を参考にさせていただき、特定のファイルを検索して、各アプリの動作に簡単にアクセスするpeco。

http://d.hatena.ne.jp/syohex/20140729/1406648636

http://qiita.com/yungsang/items/e10ca283a1ceeaa845db

peco, peco, peco...


セットアップ

@yungsangさんのpeco-find-cdを少し拡張しつつちょっと変更して、関数内でpecoを二回使ってサービスを操作できるようにしました。


peco-find-cd-rev

peco-find-cd-rev() {

local FILENAME="$1"
local MAXDEPTH="${2:-5}"

if [ -z "$FILENAME" ] ; then
echo "Usage: peco-find-cd <FILENAME> [<MAXDEPTH>]" >&2
return 1
fi

local DIR=$(find ~ -maxdepth ${MAXDEPTH} -name ${FILENAME} | peco | head -n 1)

_action() {
if [ ${FILENAME} = Vagrantfile ]; then
pushd "$DIR"
vagrant $(printf "up\nresume\nreload\nprovision\nssh\nshare\nstatus\nhalt\nsuspend\ndestroy"| peco --prompt='Action>')

elif [ ${FILENAME} = Dockerfile ]; then
pushd "$DIR"
docker $(printf "start\nps\nimages\npause\nunpause\nstop\nrestart\nattach\nbuild\ncommit\ncp\ndiff\nevents\nexport\nhistory\nimport\ninfo\ninspect\nkill\nload\nlogin\nlogout\nlogs\nport\npull\npush\nrm\nrmi\nrun\nsave\nsearch\ntag\ntop\nwait"| peco --prompt='Action>')

elif [ ${FILENAME} = gulpfile ]; then
pushd "$DIR"
$(printf "gulp\ngulp server\ngulp clean"| peco --prompt='Action>')

elif [ ${FILENAME} = Guardfile ]; then
pushd "$DIR"
guard $(printf "start\nlist\nnotifiers\nshow"| peco --prompt='Action>')

else [ -n "${FILENAME}" ];
pushd "$DIR"
fi
}

if [ -n "$DIR" ] ; then
DIR=${DIR%/*}
_action
fi
}



使いかた

普通のpeco-find-cdとしても使えますが、特定のファイルを指定するとアクションを表示します。

現状は

peco-find-cd-rev Vagrantfile

peco-find-cd-rev Dockerfile

peco-find-cd-rev gulpfile

peco-find-cd-rev Guardfile

のコマンドに対応しています。

後は好きにエイリアス設定してください。


問題

Gitはコマンドが多すぎたのでまだ書いてません。必要に迫られたら書こうと思います。

ただあると楽なのは目に見えている。

これこそ「最初大変、後々楽」する典型ですね。

怠惰・短気・傲慢...

Dockerは普段使わないので、アクションの順番は適当かつ、そのままでは使えないコマンドもいくつか。。。

Dockerだけ、もう一段pecoをかませる必要がありそうです。

たぶん誰かやっていただけることでしょう。

あとはアクションをそれぞれのhelpから引っ張ってこれるようにしたら楽そう。

ソース自体のリファクタリングもできそうなのでどなたか。。。

オプションを付けると今のカレントディレクトリに戻ってくるようにしたかったですが、オプションの設定の仕方まで調べられなかったです。。。

あわせて誰か教えていただけると嬉しいです:)

随時更新予定です。

最近はpecoが流行り過ぎて、皆さんお辞儀ばっかしてますね〜