11#! /usr/bin/env bash
22
3+ # This is technically redundant, since all consumers of this lib will have enabled these,
4+ # however, it helps Shellcheck realise the options under which these functions will run.
5+ set -euo pipefail
6+
37export DEFAULT_MAVEN_VERSION=" 3.9.4"
48
5- install_maven () {
6- local installDir= $1
7- local buildDir= $2
8- mavenHome= $installDir /.maven
9+ common:: install_maven () {
10+ local install_dir= " ${1} "
11+ local build_dir= " ${2} "
12+ local maven_home= " ${install_dir} /.maven"
913
10- definedMavenVersion=$( detect_maven_version " ${buildDir} " )
14+ local defined_maven_version
15+ defined_maven_version=$( common::detect_maven_version " ${build_dir} " )
1116
12- mavenVersion= ${definedMavenVersion :- $DEFAULT_MAVEN_VERSION }
17+ local maven_version= " ${defined_maven_version :- ${ DEFAULT_MAVEN_VERSION} } "
1318
14- status_pending " Installing Maven ${mavenVersion } "
15- local mavenUrl =" https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${mavenVersion } /apache-maven-${mavenVersion } -bin.tar.gz"
16- if is_supported_maven_version " ${mavenVersion } " " ${mavenUrl } " ; then
17- download_maven " ${mavenUrl } " " ${mavenHome } "
19+ status_pending " Installing Maven ${maven_version } "
20+ local maven_url =" https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${maven_version } /apache-maven-${maven_version } -bin.tar.gz"
21+ if common:: is_supported_maven_version " ${maven_version } " " ${maven_url } " ; then
22+ common:: download_maven " ${maven_url } " " ${maven_home } "
1823 status_done
1924 else
2025 error_return " Error, you have defined an unsupported Maven version in the system.properties file.
@@ -23,34 +28,35 @@ The default supported version is ${DEFAULT_MAVEN_VERSION}"
2328 fi
2429}
2530
26- download_maven () {
27- local mavenUrl= $1
28- local installDir= $2
31+ common:: download_maven () {
32+ local maven_url= " ${1} "
33+ local install_dir= " ${2} "
2934
30- rm -rf " ${installDir } "
31- mkdir -p " ${installDir } "
32- curl --fail --retry 3 --retry-connrefused --connect-timeout 5 --silent --max-time 60 --location " ${mavenUrl } " | tar -xzm --strip-components 1 -C " ${installDir } "
33- chmod +x " ${installDir } /bin/mvn"
35+ rm -rf " ${install_dir } "
36+ mkdir -p " ${install_dir } "
37+ curl --fail --retry 3 --retry-connrefused --connect-timeout 5 --silent --max-time 60 --location " ${maven_url } " | tar -xzm --strip-components 1 -C " ${install_dir } "
38+ chmod +x " ${install_dir } /bin/mvn"
3439}
3540
36- is_supported_maven_version () {
37- local mavenVersion= ${1}
38- local mavenUrl= ${2:? }
39- if [ " $mavenVersion " = " $DEFAULT_MAVEN_VERSION " ]; then
41+ common:: is_supported_maven_version () {
42+ local maven_version= " ${1} "
43+ local maven_url= " ${2:? } "
44+ if [[ " ${maven_version} " = " ${ DEFAULT_MAVEN_VERSION} " ] ]; then
4045 return 0
41- elif curl -I --retry 3 --retry-connrefused --connect-timeout 5 --fail --silent --max-time 5 --location " ${mavenUrl } " > /dev/null; then
46+ elif curl -I --retry 3 --retry-connrefused --connect-timeout 5 --fail --silent --max-time 5 --location " ${maven_url } " > /dev/null; then
4247 return 0
4348 else
4449 return 1
4550 fi
4651}
4752
48- detect_maven_version () {
49- local baseDir=${1}
50- if [ -f " ${baseDir} /system.properties" ]; then
51- mavenVersion=$( get_app_system_value " ${baseDir} /system.properties" " maven.version" )
52- if [ -n " $mavenVersion " ]; then
53- echo " ${mavenVersion} "
53+ common::detect_maven_version () {
54+ local base_dir=" ${1} "
55+ if [[ -f " ${base_dir} /system.properties" ]]; then
56+ local maven_version
57+ maven_version=$( common::get_app_system_value " ${base_dir} /system.properties" " maven.version" )
58+ if [[ -n " ${maven_version} " ]]; then
59+ echo " ${maven_version} "
5460 else
5561 echo " "
5662 fi
@@ -59,34 +65,34 @@ detect_maven_version() {
5965 fi
6066}
6167
62- get_app_system_value () {
63- local file=${1?" No file specified" }
64- local key=${2?" No key specified" }
68+ common:: get_app_system_value () {
69+ local file=" ${1?No file specified} "
70+ local key=" ${2?No key specified} "
6571
6672 # escape for regex
6773 local escaped_key
6874 # shellcheck disable=SC2001
6975 escaped_key=" $( echo " ${key} " | sed " s/\./\\ \./g" ) "
7076
71- [ -f " ${file} " ] &&
77+ [[ -f " ${file} " ] ] &&
7278 grep -E " ^${escaped_key} [[:space:]=]+" " ${file} " |
7379 sed -E -e " s/${escaped_key} ([\ \t]*=[\ \t]*|[\ \t]+)([A-Za-z0-9\.-]*).*/\2/g"
7480}
7581
76- cache_copy () {
77- rel_dir=$1
78- from_dir=$2
79- to_dir=$3
82+ common:: cache_copy () {
83+ local rel_dir=" ${1} "
84+ local from_dir=" ${2} "
85+ local to_dir=" ${3} "
8086 rm -rf " ${to_dir:? } /${rel_dir:? } "
81- if [ -d " ${from_dir} /${rel_dir} " ]; then
87+ if [[ -d " ${from_dir} /${rel_dir} " ] ]; then
8288 mkdir -p " ${to_dir} /${rel_dir} "
8389 cp -pr " ${from_dir} /${rel_dir} " /. " ${to_dir} /${rel_dir} "
8490 fi
8591}
8692
87- install_jdk () {
88- local install_dir=${1}
89- local cache_dir=${2}
93+ common:: install_jdk () {
94+ local install_dir=" ${1} "
95+ local cache_dir=" ${2} "
9096
9197 JVM_COMMON_BUILDPACK=${JVM_COMMON_BUILDPACK:- https:// buildpack-registry.s3.us-east-1.amazonaws.com/ buildpacks/ heroku/ jvm.tgz}
9298 mkdir -p /tmp/jvm-common
0 commit comments