Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ
われらが@tomorrowkeyが書いてくれた↑で紹介されている、Gradleのタスクをcompletionしてくれるgradle-tab-completion.bash
なんですが2014-12/21
現在でMac(10.9.5 Mavericks)に導入するにあたってちょっと修正が必要なのでその点について書きます。あと初回実行時に留意するべきポイントがあるので解説します。
Macに導入する場合に必要な修正
gradle-tab-completion.bashは以下のgistで公開されてます。
Gradle tab completion for Bash. Works on both Mac and Linux.
導入方法とかは↑に書いてあるので省きます。現在公開されているgradle-tab-completion.bashには誤りがあってMacでは正常に動きません。すでにgistに誤りについてのコメントがあるのでいずれ直ってるかもしれません。
必要な修正は21行目です。余計なスペースがあるんですね。
before
21: if [[ -x `which md5 2 > /dev/null` ]]; then # mac
after
21: if [[ -x `which md5 2> /dev/null` ]]; then # mac
この修正をすれば正常にMacで動作します。
初回実行時の留意点
gradle-tab-completion.bash
の中身を読んでみると、33行目で一度gradleのtasksを実行してそれらをgrepしつつawkなどをかまして対象のbuild.gradleのタスク一覧を取り出しています。
33: commands=$($gradle_cmd --no-color --quiet tasks | grep ' - ' | awk '{print $1}' | tr '\n' ' ')
その後この一覧をキャッシュして使いまわします。その為初回のcompletionは./gradlew tasks
の実行が完了するまで待たされます。
プロジェクトによっては./gradlew tasks
がすごく時間がかかったりする場合もあるのでcompletionがフリーズした印象を受けたりします。というか僕はそれではまりました(./gradlew tasks
が1分かかった。待ちきれず中断しまくった)。
また、build.gradleのmd5のハッシュ値を見て更新されたかどうかを判定しているので、build.gradleを更新したあとの最初のcompletionも時間がかかると思います。
初回、更新後は気長に待ちましょう。
まとめ
gradle-tab-completion.bash
ベンリサイコー