libmakepkg/util/option: Refactor checking to reduce code duplication

Pull out the expected=y/n check into a separate function and make use of
the fact we can just prepend the fallback arrays to get the same result.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Jan Alexander Steffens (heftig) 2018-06-19 22:33:56 +02:00 committed by Allan McRae
parent 92bc0a4740
commit 4e83abaae5

View file

@ -48,6 +48,30 @@ in_opt_array() {
}
##
# usage : check_opt_array( $option, $expected_val, $haystack )
# return : 0 - matches expected
# 1 - does not match expected
# 127 - not found
##
check_opt_array() {
local option=$1 expected=$2; shift 2
in_opt_array "$option" "$@"
case $? in
0) # assert enabled
[[ $expected = y ]]
return ;;
1) # assert disabled
[[ $expected = n ]]
return ;;
esac
# not found
return 127
}
##
# Checks to see if options are present in makepkg.conf or PKGBUILD;
# PKGBUILD options always take precedence.
@ -58,29 +82,7 @@ in_opt_array() {
# 127 - not found
##
check_option() {
in_opt_array "$1" ${options[@]}
case $? in
0) # assert enabled
[[ $2 = y ]]
return ;;
1) # assert disabled
[[ $2 = n ]]
return
esac
# fall back to makepkg.conf options
in_opt_array "$1" ${OPTIONS[@]}
case $? in
0) # assert enabled
[[ $2 = y ]]
return ;;
1) # assert disabled
[[ $2 = n ]]
return
esac
# not found
return 127
check_opt_array "$@" "${OPTIONS[@]}" "${options[@]}"
}
@ -93,20 +95,10 @@ check_option() {
# 127 - not found
##
check_buildenv() {
in_opt_array "$1" ${BUILDENV[@]}
case $? in
0) # assert enabled
[[ $2 = "y" ]]
return ;;
1) # assert disabled
[[ $2 = "n" ]]
return ;;
esac
# not found
return 127
check_opt_array "$@" "${BUILDENV[@]}"
}
##
# Checks to see if options are present in BUILDENV or PKGBUILD;
# PKGBUILD options always take precedence.
@ -117,26 +109,5 @@ check_buildenv() {
# 127 - not found
##
check_buildoption() {
in_opt_array "$1" ${options[@]}
case $? in
0) # assert enabled
[[ $2 = y ]]
return ;;
1) # assert disabled
[[ $2 = n ]]
return
esac
in_opt_array "$1" ${BUILDENV[@]}
case $? in
0) # assert enabled
[[ $2 = y ]]
return ;;
1) # assert disabled
[[ $2 = n ]]
return
esac
# not found
return 127
check_opt_array "$@" "${BUILDENV[@]}" "${options[@]}"
}