diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> | 2018-06-19 22:33:56 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2018-08-10 04:37:20 +0200 |
commit | 4e83abaae51c82ce6571450fb3ed9e2e71175b68 (patch) | |
tree | bc3df61153508b4cbf90b1d00a0a00dcfd2ee110 /scripts | |
parent | 92bc0a474081c56d71605787d57ea2f6715a639c (diff) | |
download | pacman-4e83abaae51c82ce6571450fb3ed9e2e71175b68.tar.gz pacman-4e83abaae51c82ce6571450fb3ed9e2e71175b68.tar.xz |
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>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/libmakepkg/util/option.sh.in | 77 |
1 files changed, 24 insertions, 53 deletions
diff --git a/scripts/libmakepkg/util/option.sh.in b/scripts/libmakepkg/util/option.sh.in index 46e0568d..3299df9c 100644 --- a/scripts/libmakepkg/util/option.sh.in +++ b/scripts/libmakepkg/util/option.sh.in @@ -49,34 +49,22 @@ in_opt_array() { ## -# Checks to see if options are present in makepkg.conf or PKGBUILD; -# PKGBUILD options always take precedence. -# -# usage : check_option( $option, $expected_val ) +# usage : check_opt_array( $option, $expected_val, $haystack ) # return : 0 - matches expected # 1 - does not match expected # 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 +check_opt_array() { + local option=$1 expected=$2; shift 2 - # fall back to makepkg.conf options - in_opt_array "$1" ${OPTIONS[@]} + in_opt_array "$option" "$@" case $? in 0) # assert enabled - [[ $2 = y ]] + [[ $expected = y ]] return ;; 1) # assert disabled - [[ $2 = n ]] - return + [[ $expected = n ]] + return ;; esac # not found @@ -85,6 +73,20 @@ check_option() { ## +# Checks to see if options are present in makepkg.conf or PKGBUILD; +# PKGBUILD options always take precedence. +# +# usage : check_option( $option, $expected_val ) +# return : 0 - matches expected +# 1 - does not match expected +# 127 - not found +## +check_option() { + check_opt_array "$@" "${OPTIONS[@]}" "${options[@]}" +} + + +## # Check if option is present in BUILDENV # # usage : check_buildenv( $option, $expected_val ) @@ -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[@]}" } |