@@ -14,7 +14,7 @@ function alpine_print_help() {
1414$( basename " ${BASH_SOURCE[0]} " ) : Update the Alpine Linux image location in the specified templates
1515
1616Usage:
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
1919Description:
2020 This script updates the Alpine Linux image location in the specified templates.
@@ -41,6 +41,7 @@ Examples:
4141Flags:
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
4546HELP
4647}
169170fi
170171
171172declare -a templates=()
172- declare overriding='{" path_version" :" latest-stable" }'
173+ declare overriding='{}'
174+ declare version_major='' version_minor=''
173175while [[ $# -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=" {}"
212237done
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+
214255if [[ ${# templates[@]} -eq 0 ]]; then
215256 alpine_print_help
216257 exit 0
0 commit comments