Skip to content

Commit b56686c

Browse files
committed
update-template-alpine.sh: add --version-major and --version-minor
Signed-off-by: Norio Nomura <[email protected]>
1 parent af5fe6b commit b56686c

File tree

1 file changed

+44
-3
lines changed

1 file changed

+44
-3
lines changed

hack/update-template-alpine.sh

+44-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function alpine_print_help() {
1414
$(basename "${BASH_SOURCE[0]}"): Update the Alpine Linux image location in the specified templates
1515
1616
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>...
1818
1919
Description:
2020
This script updates the Alpine Linux image location in the specified templates.
@@ -41,6 +41,7 @@ Examples:
4141
Flags:
4242
--version-major-minor (<major>.<minor>|latest-stable) Use the specified <major>.<minor> version or alias "latest-stable".
4343
The <major>.<minor> version must be 3.18 or later.
44+
--version-major <major> --version-minor <minor> Use the specified <major> and <minor> version.
4445
-h, --help Print this help message
4546
HELP
4647
}
@@ -169,7 +170,8 @@ else
169170
fi
170171
171172
declare -a templates=()
172-
declare overriding='{"path_version":"latest-stable"}'
173+
declare overriding='{}'
174+
declare version_major='' version_minor=''
173175
while [[ $# -gt 0 ]]; do
174176
case "$1" in
175177
-h | --help)
@@ -198,10 +200,33 @@ while [[ $# -gt 0 ]]; do
198200
else
199201
error_exit "--version-major-minor requires a value in the format <major>.<minor> or latest-stable"
200202
fi
201-
# shellcheck disable=2034
202203
json_vars path_version <<<"${overriding}"
203204
)
204205
;;
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+
;;
205230
*.yaml) templates+=("$1") ;;
206231
*)
207232
error_exit "Unknown argument: $1"
@@ -211,6 +236,22 @@ while [[ $# -gt 0 ]]; do
211236
[[ -z ${overriding} ]] && overriding="{}"
212237
done
213238
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+
214255
if [[ ${#templates[@]} -eq 0 ]]; then
215256
alpine_print_help
216257
exit 0

0 commit comments

Comments
 (0)