11#! /usr/bin/env bash
2+ # shellcheck source=/dev/null
3+ . generate-layer.sh
24set -eo pipefail
35
46echo " ---> Java Buildpack"
57# amd64 aarch64
68arch=$( dpkg --print-architecture)
79if [ " ${arch} " == " arm64" ]; then
8- arch=" aarch64"
10+ arch=" aarch64"
911fi
1012# 1. GET ARGS
1113bp_dir=$(
12- cd " $( dirname " $0 " ) " /..
13- pwd
14+ cd " $( dirname " $0 " ) " /..
15+ pwd
1416)
1517layers_dir=$1
1618env_dir=" $2 /env"
1719plan_path=$3
1820
1921# 2. LOAD USER-PROVIDED BUILD-TIME ENVIRONMENT VARIABLES
20- if compgen -G " ${env_dir} " /* > /dev/null; then
22+ if compgen -G " ${env_dir} " /* > /dev/null; then
2123 for var in " ${env_dir} " /* ; do
2224 declare " $( basename " ${var} " ) =$( < " ${var} " ) "
2325 done
2426fi
2527
2628# 3. INSTALL JAVA
2729get_jdk_url () {
28- if [ " ${arch} " == " amd64" ]; then
29- local arch=" x64"
30+ if [ " ${arch} " == " amd64" ]; then
31+ local arch=" x64"
3032 fi
31- if [ " ${version} " == " 8" ]; then
33+ if [ " ${version} " == " 8" ]; then
3234 echo " https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_${arch} _linux_8u292b10.tar.gz"
3335 elif [ " ${version} " == " 11" ]; then
3436 echo " https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.11%2B9/OpenJDK11U-jdk_${arch} _linux_11.0.11_9.tar.gz"
3537 elif [ " ${version} " == " 16" ]; then
3638 echo " https://download.java.net/java/GA/jdk16.0.1/7147401fd7354114ac51ef3e1328291f/9/GPL/openjdk-16.0.1_linux-${arch} _bin.tar.gz"
3739 elif [ " ${version} " == " 17" ]; then
3840 echo " https://download.java.net/java/early_access/jdk17/28/GPL/openjdk-17-ea+28_linux-${arch} _bin.tar.gz"
39- elif [ " ${version} " == " 18" ]; then
40- echo " https://download.java.net/java/early_access/jdk18/3/GPL/openjdk-18-ea+3_linux-${arch} _bin.tar.gz"
41- else
42- echo " ${version} "
43- fi
41+ elif [ " ${version} " == " 18" ]; then
42+ echo " https://download.java.net/java/early_access/jdk18/3/GPL/openjdk-18-ea+3_linux-${arch} _bin.tar.gz"
43+ else
44+ echo " ${version} "
45+ fi
4446}
4547
46- version=$( < " ${plan_path} " yj -t | jq -r ' .entries[] | select(.name == "jdk") | .version' )
48+ version=$( yj < " ${plan_path} " -t | jq -r ' .entries[] | select(.name == "jdk") | .version' )
4749jdk_url=" $( get_jdk_url) "
4850
4951# If it doesn't exist locally, create a JDK cache layer
5052# This makes JDK available to subsequent buildpacks as well
5153jdk_layer_dir=${layers_dir} /jdk
5254if [[ -f " ${jdk_layer_dir} .toml" ]]; then
53- cached_jdk_url=$( < " ${jdk_layer_dir} .toml" yj -t | jq -r .metadata.url 2> /dev/null || echo ' JDK TOML parsing failed' )
55+ cached_jdk_url=$( yj < " ${jdk_layer_dir} .toml" -t | jq -r .metadata.url 2> /dev/null || echo ' JDK TOML parsing failed' )
5456fi
5557
56- if [[ " ${jdk_url} " != " ${cached_jdk_url} " ]] ; then
58+ if [[ " ${jdk_url} " != " ${cached_jdk_url} " ]]; then
5759 echo " ---> Downloading JDK"
5860 rm -rf " ${layers_dir} " /jdk
5961 mkdir -p " ${layers_dir} " /jdk/env
6062 wget -q -O - " ${jdk_url} " | tar pxz -C " ${jdk_layer_dir} " --strip-components=1
61- cat > " ${jdk_layer_dir} .toml" << EOF
63+ cat > " ${jdk_layer_dir} .toml" << EOF
6264launch = true
6365build = true
6466cache = true
6567[metadata]
6668version = "${version} "
6769EOF
6870
69- echo " ${layers_dir} " /jdk > " ${layers_dir} " /jdk/env/JAVA_HOME
71+ echo " ${layers_dir} " /jdk > " ${layers_dir} " /jdk/env/JAVA_HOME
7072 if [[ -z " ${LD_LIBRARY_PATH} " ]]; then
71- echo " ${JAVA_HOME} /jre/lib/${arch} /server" > " ${jdk_layer_dir} /env/LD_LIBRARY_PATH"
73+ echo " ${JAVA_HOME} /jre/lib/${arch} /server" > " ${jdk_layer_dir} /env/LD_LIBRARY_PATH"
7274 else
73- echo " ${JAVA_HOME} /jre/lib/${arch} /server:${LD_LIBRARY_PATH} " > " ${jdk_layer_dir} " /env/LD_LIBRARY_PATH
75+ echo " ${JAVA_HOME} /jre/lib/${arch} /server:${LD_LIBRARY_PATH} " > " ${jdk_layer_dir} " /env/LD_LIBRARY_PATH
7476 fi
7577
7678 mkdir -p " ${jdk_layer_dir} /profile.d"
77- cat > " ${jdk_layer_dir} /profile.d/jdk.sh" << EOF
79+ cat > " ${jdk_layer_dir} /profile.d/jdk.sh" << EOF
7880export JAVA_HOME="${jdk_layer_dir} "
7981if [[ -z \$ LD_LIBRARY_PATH ]]; then
8082 export LD_LIBRARY_PATH="\$ JAVA_HOME/jre/lib/${arch} /server"
@@ -97,33 +99,33 @@ source "$bp_dir/lib/gradle_build"
9799source " $bp_dir /lib/maven_build"
98100build_choice=" maven"
99101if [ -f pom.xml ] && [ -f gradlew ]; then
100- if [[ -f .build-choice ]]; then
101- build_choice=$( < .build-choice tr -d ' [:space:]' )
102- fi
102+ if [[ -f .build-choice ]]; then
103+ build_choice=$( tr < .build-choice -d ' [:space:]' )
104+ fi
103105elif [ -f pom.xml ] && [ ! -f gradlew ]; then
104- build_choice=" maven"
106+ build_choice=" maven"
105107elif [ -f gradlew ] && [ ! -f pom.xml ]; then
106- build_choice=" gradle"
108+ build_choice=" gradle"
107109fi
108110
109111if [ " ${build_choice} " == " maven" ]; then
110- maven_build
112+ maven_build
111113elif [ " ${build_choice} " == " gradle" ]; then
112- gradle_build
114+ gradle_build
113115fi
114116
115117# 6. SET DEFAULT START COMMAND
116118if [ -f Procfile ]; then
117- generate-launch.sh " ${layers_dir} "
119+ generate-launch.sh " ${layers_dir} "
118120else
119- target_dir=" build/libs"
120- # shellcheck disable=SC2044
121- for jar_file in $( find " $target_dir " -maxdepth 1 -name " *.jar" -type f) ; do
122- cat >> " ${layers_dir} /launch.toml" << EOL
121+ target_dir=" build/libs"
122+ # shellcheck disable=SC2044
123+ for jar_file in $( find " $target_dir " -maxdepth 1 -name " *.jar" -type f) ; do
124+ cat >> " ${layers_dir} /launch.toml" << EOL
123125[[processes]]
124126type = "web"
125127command = "java -jar ${jar_file} "
126128EOL
127- break ;
128- done
129+ break
130+ done
129131fi
0 commit comments