#!/bin/bash bindir="$(dirname $0)" basedir="$(dirname $bindir)" verdir="${basedir}/versions" args=("$@") pushd "${verdir}" &>/dev/null v_all=(*/) v_all=(${v_all[@]%/}) v_def=${v_all[-1]} echo "Available gradle versions: ${v_all[@]}" popd &>/dev/null run_gradle() { ${verdir}/${v_found}/bin/gradle "${args[@]}" exit $? } # key-value pairs of what gradle version each gradle plugin version # should accept d_plugin_k=(0.7 0.6 0.5 0.4 0.3 0.2) d_plugin_v=(1.9 1.8 1.6 1.6 1.4 1.4) # Latest takes priority files=(build.gradle) for f in ${files[@]}; do [[ -f $f ]] || continue while read l; do if [[ $l == *'com.android.tools.build:gradle:'* ]]; then plugin_pver=$(echo -n "$l" | sed "s/.*com.android.tools.build:gradle:\\([0-9\\.\\+]\\+\\).*/\\1/") elif [[ $l == *'gradleVersion'* ]]; then wrapper_ver=$(echo -n "$l" | sed "s/.*gradleVersion[ ]*=[ ]*[\"']\\([0-9\\.]\\+\\)[\"'].*/\\1/") fi done < $f done if [[ -n $wrapper_ver ]]; then v_found=$wrapper_ver echo Found $v_found via gradleVersion run_gradle fi if [[ -n $plugin_pver ]]; then i=0 match=false for k in ${d_plugin_k[@]}; do if [[ $plugin_pver == ${k}* ]]; then plugin_ver=${d_plugin_v[$i]} match=true break fi let i++ done if $match; then v_found=$plugin_ver echo Found $v_found via gradle plugin version $k fi fi [[ -n $v_found ]] && run_gradle echo No suitable gradle version found - defaulting to $v_def v_found=$v_def run_gradle