1717# For documentation please refer to:
1818# https://github.com/KoskiLabs/jdk-wrapper/blob/master/README.md
1919
20+ HTTP_PROTOCOL=" http"
21+ FILE_PROTOCOL=" file"
22+
23+ LATEST_RELEASE=" latest"
24+ SNAPSHOT_RELEASE=" snapshot"
25+
2026log_err () {
2127 l_prefix=$( date +' %H:%M:%S' )
2228 printf " [%s] %s\\ n" " ${l_prefix} " " $@ " 1>&2 ;
@@ -42,37 +48,63 @@ safe_command() {
4248
4349checksum () {
4450 l_file=" $1 "
45- checksum_exec =" "
46- checksum_args =" "
51+ l_checksum_exec =" "
52+ l_checksum_args =" "
4753 if command -v sha256sum > /dev/null; then
48- checksum_exec =" sha256sum"
54+ l_checksum_exec =" sha256sum"
4955 elif command -v shasum > /dev/null; then
50- checksum_exec =" shasum"
51- checksum_args =" -a 256"
56+ l_checksum_exec =" shasum"
57+ l_checksum_args =" -a 256"
5258 elif command -v sha1sum > /dev/null; then
53- checksum_exec =" sha1sum"
59+ l_checksum_exec =" sha1sum"
5460 elif command -v md5 > /dev/null; then
55- checksum_exec =" md5"
61+ l_checksum_exec =" md5"
5662 fi
57- if [ -z " ${checksum_exec } " ]; then
63+ if [ -z " ${l_checksum_exec } " ]; then
5864 log_err " ERROR: No supported checksum command found!"
5965 exit 1
6066 fi
61- ${checksum_exec } ${checksum_args } < " ${l_file} "
67+ ${l_checksum_exec } ${l_checksum_args } < " ${l_file} "
6268}
6369
6470rand () {
6571 awk ' BEGIN {srand();printf "%d\n", (rand() * 10^8);}'
6672}
6773
68- download_if_needed () {
69- file=" $1 "
70- path=" $2 "
71- if [ ! -f " ${path} /${file} " ]; then
72- jdkw_url=" ${JDKW_BASE_URI} /releases/download/${JDKW_RELEASE} /${file} "
73- log_out " Downloading ${file} from ${jdkw_url} "
74- safe_command " curl ${curl_options} -f -k -L -o \" ${path} /${file} \" \" ${jdkw_url} \" "
75- safe_command " chmod +x \" ${path} /${file} \" "
74+ get_protocol () {
75+ case " ${JDKW_BASE_URI} " in
76+ http://* |https://* )
77+ printf " %s" " ${HTTP_PROTOCOL} "
78+ ;;
79+ file://* )
80+ printf " %s" " ${FILE_PROTOCOL} "
81+ ;;
82+ * )
83+ log_err " ERROR: Unsupported protocol in JDKW_BASE_URI: ${JDKW_BASE_URI} "
84+ exit 1
85+ esac
86+ }
87+
88+ obtain_if_needed () {
89+ l_file=" $1 "
90+ l_target_path=" $2 "
91+ if [ ! -f " ${l_target_path} /${l_file} " ]; then
92+ case " ${JDKW_BASE_URI} " in
93+ http://* |https://* )
94+ l_jdkw_url=" ${JDKW_BASE_URI} /releases/download/${JDKW_RELEASE} /${l_file} "
95+ log_out " Downloading ${l_file} from ${l_jdkw_url} "
96+ safe_command " curl ${curl_options} -f -k -L -o \" ${l_target_path} /${l_file} \" \" ${l_jdkw_url} \" "
97+ ;;
98+ file://* )
99+ l_jdkw_path=" ${JDKW_BASE_URI# file:// } /${l_file} "
100+ log_out " Copying ${l_file} from ${l_jdkw_path} "
101+ safe_command " cp \" ${l_jdkw_path} \" \" ${l_target_path} /${l_file} \" "
102+ ;;
103+ * )
104+ log_err " ERROR: Unsupported protocol in JDKW_BASE_URI: ${JDKW_BASE_URI} "
105+ exit 1
106+ esac
107+ safe_command " chmod +x \" ${l_target_path} /${l_file} \" "
76108 fi
77109}
78110
@@ -98,7 +130,6 @@ done < "${l_fifo}"
98130safe_command " rm \" ${l_fifo} \" "
99131
100132# Process (but do not load) properties from command line arguments
101- command=
102133cmd_configuration=
103134for arg in " $@ " ; do
104135 jdkw_arg=$( echo " ${arg} " | grep ' ^JDKW_.*' )
@@ -109,13 +140,6 @@ for arg in "$@"; do
109140 if [ -n " ${jdkw_arg} " ]; then
110141 cmd_configuration=" ${cmd_configuration}${arg} "
111142 fi
112- case " ${arg} " in
113- * \' * )
114- arg=$( printf " %s" " $arg " | sed " s/'/'\" '\" '/g" )
115- ;;
116- * ) : ;;
117- esac
118- command=" ${command} '${arg} '"
119143done
120144
121145# Default base directory to current working directory
@@ -144,7 +168,10 @@ if [ -z "${JDKW_BASE_URI}" ]; then
144168 JDKW_BASE_URI=" https://github.com/KoskiLabs/jdk-wrapper"
145169fi
146170if [ -z " ${JDKW_RELEASE} " ]; then
147- JDKW_RELEASE=" latest"
171+ JDKW_RELEASE=" ${LATEST_RELEASE} "
172+ if [ $( get_protocol) = " ${FILE_PROTOCOL} " ]; then
173+ JDKW_RELEASE=" ${SNAPSHOT_RELEASE} "
174+ fi
148175 log_out " Defaulted to version ${JDKW_RELEASE} "
149176fi
150177if [ -z " ${JDKW_TARGET} " ]; then
@@ -156,7 +183,7 @@ if [ -z "${JDKW_VERBOSE}" ]; then
156183fi
157184
158185# Resolve latest version
159- if [ " ${JDKW_RELEASE} " = " latest " ]; then
186+ if [ " ${JDKW_RELEASE} " = " ${LATEST_RELEASE} " ]; then
160187 latest_version_json=" ${TMPDIR:-/ tmp} /jdkw-latest-version-$$ .$( rand) "
161188 safe_command " curl ${curl_options} -f -k -L -o \" ${latest_version_json} \" -H 'Accept: application/json' \" ${JDKW_BASE_URI} /releases/latest\" "
162189 JDKW_RELEASE=$( sed -e ' s/.*"tag_name":"\([^"]*\)".*/\1/' < " ${latest_version_json} " )
166193
167194# Ensure target directory exists
168195jdkw_path=" ${JDKW_TARGET} /jdkw/${JDKW_RELEASE} "
196+ if [ -d " ${jdkw_path} " ] && [ " ${JDKW_RELEASE} " = " ${SNAPSHOT_RELEASE} " ]; then
197+ log_out " Removing target snapshot directory ${jdkw_path} "
198+ safe_command " rm -rf \" ${jdkw_path} \" "
199+ fi
169200if [ ! -d " ${jdkw_path} " ]; then
170201 log_out " Creating target directory ${jdkw_path} "
171202 safe_command " mkdir -p \" ${jdkw_path} \" "
174205# Download the jdk wrapper version
175206jdkw_impl=" jdkw-impl.sh"
176207jdkw_wrapper=" jdk-wrapper.sh"
177- download_if_needed " ${jdkw_impl} " " ${jdkw_path} "
178- download_if_needed " ${jdkw_wrapper} " " ${jdkw_path} "
208+ obtain_if_needed " ${jdkw_impl} " " ${jdkw_path} "
209+ obtain_if_needed " ${jdkw_wrapper} " " ${jdkw_path} "
179210
180211# Check whether this wrapper is the one specified for this version
181212jdkw_download=" ${jdkw_path} /${jdkw_wrapper} "
0 commit comments