17
17
# For documentation please refer to:
18
18
# https://github.com/KoskiLabs/jdk-wrapper/blob/master/README.md
19
19
20
+ HTTP_PROTOCOL=" http"
21
+ FILE_PROTOCOL=" file"
22
+
23
+ LATEST_RELEASE=" latest"
24
+ SNAPSHOT_RELEASE=" snapshot"
25
+
20
26
log_err () {
21
27
l_prefix=$( date +' %H:%M:%S' )
22
28
printf " [%s] %s\\ n" " ${l_prefix} " " $@ " 1>&2 ;
@@ -42,37 +48,63 @@ safe_command() {
42
48
43
49
checksum () {
44
50
l_file=" $1 "
45
- checksum_exec =" "
46
- checksum_args =" "
51
+ l_checksum_exec =" "
52
+ l_checksum_args =" "
47
53
if command -v sha256sum > /dev/null; then
48
- checksum_exec =" sha256sum"
54
+ l_checksum_exec =" sha256sum"
49
55
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"
52
58
elif command -v sha1sum > /dev/null; then
53
- checksum_exec =" sha1sum"
59
+ l_checksum_exec =" sha1sum"
54
60
elif command -v md5 > /dev/null; then
55
- checksum_exec =" md5"
61
+ l_checksum_exec =" md5"
56
62
fi
57
- if [ -z " ${checksum_exec } " ]; then
63
+ if [ -z " ${l_checksum_exec } " ]; then
58
64
log_err " ERROR: No supported checksum command found!"
59
65
exit 1
60
66
fi
61
- ${checksum_exec } ${checksum_args } < " ${l_file} "
67
+ ${l_checksum_exec } ${l_checksum_args } < " ${l_file} "
62
68
}
63
69
64
70
rand () {
65
71
awk ' BEGIN {srand();printf "%d\n", (rand() * 10^8);}'
66
72
}
67
73
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} \" "
76
108
fi
77
109
}
78
110
@@ -98,7 +130,6 @@ done < "${l_fifo}"
98
130
safe_command " rm \" ${l_fifo} \" "
99
131
100
132
# Process (but do not load) properties from command line arguments
101
- command=
102
133
cmd_configuration=
103
134
for arg in " $@ " ; do
104
135
jdkw_arg=$( echo " ${arg} " | grep ' ^JDKW_.*' )
@@ -109,13 +140,6 @@ for arg in "$@"; do
109
140
if [ -n " ${jdkw_arg} " ]; then
110
141
cmd_configuration=" ${cmd_configuration}${arg} "
111
142
fi
112
- case " ${arg} " in
113
- * \' * )
114
- arg=$( printf " %s" " $arg " | sed " s/'/'\" '\" '/g" )
115
- ;;
116
- * ) : ;;
117
- esac
118
- command=" ${command} '${arg} '"
119
143
done
120
144
121
145
# Default base directory to current working directory
@@ -144,7 +168,10 @@ if [ -z "${JDKW_BASE_URI}" ]; then
144
168
JDKW_BASE_URI=" https://github.com/KoskiLabs/jdk-wrapper"
145
169
fi
146
170
if [ -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
148
175
log_out " Defaulted to version ${JDKW_RELEASE} "
149
176
fi
150
177
if [ -z " ${JDKW_TARGET} " ]; then
@@ -156,7 +183,7 @@ if [ -z "${JDKW_VERBOSE}" ]; then
156
183
fi
157
184
158
185
# Resolve latest version
159
- if [ " ${JDKW_RELEASE} " = " latest " ]; then
186
+ if [ " ${JDKW_RELEASE} " = " ${LATEST_RELEASE} " ]; then
160
187
latest_version_json=" ${TMPDIR:-/ tmp} /jdkw-latest-version-$$ .$( rand) "
161
188
safe_command " curl ${curl_options} -f -k -L -o \" ${latest_version_json} \" -H 'Accept: application/json' \" ${JDKW_BASE_URI} /releases/latest\" "
162
189
JDKW_RELEASE=$( sed -e ' s/.*"tag_name":"\([^"]*\)".*/\1/' < " ${latest_version_json} " )
166
193
167
194
# Ensure target directory exists
168
195
jdkw_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
169
200
if [ ! -d " ${jdkw_path} " ]; then
170
201
log_out " Creating target directory ${jdkw_path} "
171
202
safe_command " mkdir -p \" ${jdkw_path} \" "
174
205
# Download the jdk wrapper version
175
206
jdkw_impl=" jdkw-impl.sh"
176
207
jdkw_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} "
179
210
180
211
# Check whether this wrapper is the one specified for this version
181
212
jdkw_download=" ${jdkw_path} /${jdkw_wrapper} "
0 commit comments