@@ -14,7 +14,7 @@ function alpine_print_help() {
14
14
$( basename " ${BASH_SOURCE[0]} " ) : Update the Alpine Linux image location in the specified templates
15
15
16
16
Usage:
17
- $( basename " ${BASH_SOURCE[0]} " ) [--version-major-minor (<major>.<minor>|latest-stable)] <template.yaml>...
17
+ $( basename " ${BASH_SOURCE[0]} " ) [--version-major-minor (<major>.<minor>|latest-stable)|--version-major <major> --version-minor <minor> ] <template.yaml>...
18
18
19
19
Description:
20
20
This script updates the Alpine Linux image location in the specified templates.
@@ -41,6 +41,7 @@ Examples:
41
41
Flags:
42
42
--version-major-minor (<major>.<minor>|latest-stable) Use the specified <major>.<minor> version or alias "latest-stable".
43
43
The <major>.<minor> version must be 3.18 or later.
44
+ --version-major <major> --version-minor <minor> Use the specified <major> and <minor> version.
44
45
-h, --help Print this help message
45
46
HELP
46
47
}
169
170
fi
170
171
171
172
declare -a templates=()
172
- declare overriding='{" path_version" :" latest-stable" }'
173
+ declare overriding='{}'
174
+ declare version_major='' version_minor=''
173
175
while [[ $# -gt 0 ]]; do
174
176
case " $1 " in
175
177
-h | --help)
@@ -198,10 +200,33 @@ while [[ $# -gt 0 ]]; do
198
200
else
199
201
error_exit " --version-major-minor requires a value in the format <major>.<minor> or latest-stable"
200
202
fi
201
- # shellcheck disable=2034
202
203
json_vars path_version <<< " ${overriding}"
203
204
)
204
205
;;
206
+ --version-major)
207
+ if [[ -n ${2:- } && $2 != -* ]]; then
208
+ version_major=" $2 "
209
+ shift
210
+ else
211
+ error_exit " --version-major requires a value"
212
+ fi
213
+ ;&
214
+ --version-major=*)
215
+ version_major=${version_major:- ${1#* =} }
216
+ [[ ${version_major} =~ ^[0-9]+$ ]] || error_exit " Please specify --version-major in numbers"
217
+ ;;
218
+ --version-minor)
219
+ if [[ -n ${2:- } && $2 != -* ]]; then
220
+ version_minor=" $2 "
221
+ shift
222
+ else
223
+ error_exit " --version-minor requires a value"
224
+ fi
225
+ ;&
226
+ --version-minor=*)
227
+ version_minor=${version_minor:- ${1#* =} }
228
+ [[ ${version_minor} =~ ^[0-9]+$ ]] || error_exit " Please specify --version-minor in numbers"
229
+ ;;
205
230
*.yaml) templates+=(" $1 " ) ;;
206
231
*)
207
232
error_exit " Unknown argument: $1 "
@@ -211,6 +236,22 @@ while [[ $# -gt 0 ]]; do
211
236
[[ -z ${overriding} ]] && overriding=" {}"
212
237
done
213
238
239
+ if ! jq -e '.path_version' <<<" ${overriding} " >/dev/null; then # --version-major-minor is not specified
240
+ if [[ -n ${version_major} && -n ${version_minor} ]]; then
241
+ [[ ${version_major} -gt 3 || (${version_major} -eq 3 && ${version_minor} -ge 18) ]] || error_exit " Alpine Linux version must be 3.18 or later"
242
+ # shellcheck disable=2034
243
+ path_version=" v${version_major} .${version_minor} "
244
+ overriding=$( json_vars path_version <<< " ${overriding}" )
245
+ elif [[ -n ${version_major} ]]; then
246
+ error_exit " --version-minor is required when --version-major is specified"
247
+ elif [[ -n ${version_minor} ]]; then
248
+ error_exit " --version-major is required when --version-minor is specified"
249
+ fi
250
+ elif [[ -n ${version_major} || -n ${version_minor} ]]; then # --version-major-minor is specified
251
+ echo " Ignoring --version-major and --version-minor because --version-major-minor is specified" >&2
252
+ fi
253
+ [[ ${overriding} == " {}" ]] && overriding='{" path_version" :" latest-stable" }'
254
+
214
255
if [[ ${# templates[@]} -eq 0 ]]; then
215
256
alpine_print_help
216
257
exit 0
0 commit comments