chiark / gitweb /
Properly default to the highest version of gradle
[fdroidserver.git] / buildserver / cookbooks / gradle / recipes / gradle
1 #!/bin/bash
2
3 bindir="$(dirname $0)"
4 basedir="$(dirname $bindir)"
5 verdir="${basedir}/versions"
6 args=("$@")
7 pushd "${verdir}" &>/dev/null
8
9 v_all=(*/)
10 v_all=(${v_all[@]%/})
11
12 echo "Available gradle versions: ${v_all[@]}"
13
14 popd &>/dev/null
15
16 run_gradle() {
17         ${verdir}/${v_found}/bin/gradle "${args[@]}"
18         exit $?
19 }
20
21 contains() {
22         local e
23         for e in $2; do
24                 [[ $e == $1 ]] && return 0;
25         done
26         return 1
27 }
28
29 # key-value pairs of what gradle version each gradle plugin version
30 # should accept
31 d_plugin_k=( 0.9  0.8 0.7 0.6 0.5 0.4 0.3 0.2)
32 d_plugin_v=(1.11 1.10 1.9 1.8 1.6 1.6 1.4 1.4)
33
34 for v in ${d_plugin_v}; do
35         contains $v "${v_all[*]}" && v_def=$v && break
36 done
37
38 # Latest takes priority
39 for f in ../build.gradle build.gradle; do
40         [[ -f $f ]] || continue
41         while read l; do
42                 if [[ $l == *'com.android.tools.build:gradle:'* ]]; then
43                         plugin_pver=$(echo -n "$l" | sed "s/.*com.android.tools.build:gradle:\\([0-9\\.\\+]\\+\\).*/\\1/")
44                 elif [[ $l == *'gradleVersion'* ]]; then
45                         wrapper_ver=$(echo -n "$l" | sed "s/.*gradleVersion[ ]*=[ ]*[\"']\\([0-9\\.]\\+\\)[\"'].*/\\1/")
46                 fi
47         done < $f
48 done
49
50 if [[ -n $wrapper_ver ]]; then
51         v_found=$wrapper_ver
52         echo "Found $v_found via gradleVersion"
53         run_gradle
54 fi
55
56 if [[ -n $plugin_pver ]]; then
57         i=0
58         match=false
59         for k in ${d_plugin_k[@]}; do
60                 if [[ $plugin_pver == ${k}* ]]; then
61                         plugin_ver=${d_plugin_v[$i]}
62                         match=true
63                         break
64                 fi
65                 let i++
66         done
67         if $match; then
68                 v_found=$plugin_ver
69                 echo "Found $v_found via gradle plugin version $k"
70         fi
71 fi
72
73 if [[ -z $v_found ]]; then
74         echo "No suitable gradle version found - defaulting to $v_def"
75         v_found=$v_def
76 fi
77
78 run_gradle