Created
January 31, 2016 08:43
-
-
Save t-kashima/b0a43f4f1856fbaf659c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Gradle | |
# refs: https://gist.github.com/nolanlawson/8694399 : bash-version | |
function gradle_command() { | |
local gradle_cmd='gradle' | |
if [[ -x ./gradlew ]]; then | |
gradle_cmd='./gradlew' | |
fi | |
if [[ -x ../gradlew ]]; then | |
gradle_cmd='../gradlew' | |
fi | |
echo $gradle_cmd | |
} | |
function gradle_tasks() { | |
local gradle_cmd=$(gradle_command) | |
local completions='' | |
local cache_dir="$HOME/.gradle_tabcompletion" | |
mkdir -p $cache_dir | |
# cacheするファイル名 | |
local gradle_files_checksum='hoge'; | |
if [[ -f build.gradle ]]; then | |
if [[ -x `which md5 2> /dev/null` ]]; then # mac | |
local all_gradle_files="$(find . -name build.gradle 2> /dev/null)" | |
gradle_files_checksum="$(md5 -q -s "${all_gradle_files}")" | |
else # linux | |
gradle_files_checksum="$(find . -name build.gradle | xargs md5sum | md5sum)" | |
fi | |
else | |
gradle_files_checksum='no_gradle_files' | |
fi | |
if [[ -f $cache_dir/$gradle_files_checksum ]]; then # cached! yay! | |
completions=$(\cat $cache_dir/$gradle_files_checksum) | |
else | |
completions=$($gradle_cmd --console=plain --quiet tasks --all | grep --color=none ' - ' | awk '{print $1}' | tr '\n' '<>') | |
if [[ ! -z $completions ]]; then | |
echo $completions > $cache_dir/$gradle_files_checksum | |
fi | |
fi | |
echo $completions | |
} | |
# pecoでtask選択 | |
function peco-select-gradle-tasks() { | |
local gradle_cmd=$(gradle_command) | |
local completions=$(gradle_tasks) | |
local selected_task=$(echo ${completions} | tr '<>' '\n' | peco) | |
if [ -n "$selected_task" ]; then | |
BUFFER="$gradle_cmd $selected_task" | |
zle accept-line | |
fi | |
zle clear-screen | |
} | |
zle -N peco-select-gradle-tasks | |
bindkey "^g" peco-select-gradle-tasks | |
# gradleのtab補完 | |
function _gradle() { | |
local cur="$1" | |
local completions=$(gradle_tasks) | |
local -a tasks | |
tasks=("${(z)completions}") | |
compadd $tasks | |
return 0; | |
} | |
compdef _gradle gradle | |
compdef _gradle gradlew | |
compdef _gradle ./gradlew |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment