59 lines
1.7 KiB
Bash
59 lines
1.7 KiB
Bash
|
|
# Argument parser for Python CI scripts.
|
||
|
|
parse_python_args() {
|
||
|
|
# Initialize variables
|
||
|
|
py_version=""
|
||
|
|
# ctk_mode carries the -ctk-mode value; empty means the default ("pinned").
|
||
|
|
ctk_mode=""
|
||
|
|
|
||
|
|
while [[ $# -gt 0 ]]; do
|
||
|
|
case $1 in
|
||
|
|
-py-version=*)
|
||
|
|
py_version="${1#*=}"
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
-py-version)
|
||
|
|
if [[ $# -lt 2 ]]; then
|
||
|
|
echo "Error: -py-version requires a value" >&2
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
py_version="$2"
|
||
|
|
shift 2
|
||
|
|
;;
|
||
|
|
-ctk-mode=*)
|
||
|
|
ctk_mode="${1#*=}"
|
||
|
|
# Reject an explicit-but-empty value (e.g. `-ctk-mode=`): a lane
|
||
|
|
# that wants the default omits the flag entirely, so an empty
|
||
|
|
# value signals a malformed generated argument -- fail loudly.
|
||
|
|
if [[ -z "${ctk_mode}" ]]; then
|
||
|
|
echo "Error: -ctk-mode requires a value" >&2
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
-ctk-mode)
|
||
|
|
if [[ $# -lt 2 || -z "$2" ]]; then
|
||
|
|
echo "Error: -ctk-mode requires a value" >&2
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
ctk_mode="$2"
|
||
|
|
shift 2
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
# Unknown argument, ignore
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
# Export for use by the calling script (py_version and ctk_mode are its inputs).
|
||
|
|
export py_version ctk_mode
|
||
|
|
}
|
||
|
|
|
||
|
|
require_py_version() {
|
||
|
|
if [[ -z "$py_version" ]]; then
|
||
|
|
echo "Error: -py-version is required" >&2
|
||
|
|
[[ -n "$1" ]] && echo "$1" >&2
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
}
|