[pacman-dev,1/6] libmakepkg/util/option: Refactor checking to reduce code duplication

Message ID 7d30eb87e21397fe2e5c219d8efd26f346375eb2.1529440441.git.jan.steffens@gmail.com
State Accepted, archived
Headers show
Series [pacman-dev,1/6] libmakepkg/util/option: Refactor checking to reduce code duplication | expand

Commit Message

Jan Alexander Steffens June 19, 2018, 8:33 p.m. UTC
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.
---
 scripts/libmakepkg/util/option.sh.in | 85 +++++++++-------------------
 1 file changed, 28 insertions(+), 57 deletions(-)

Patch

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
@@ -48,95 +48,66 @@  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.
 #
 #  usage : check_option( $option, $expected_val )
 # 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
-
-	# 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[@]}"
 }
 
 
 ##
 # Check if option is present in BUILDENV
 #
 #  usage : check_buildenv( $option, $expected_val )
 # return : 0   - matches expected
 #          1   - does not match expected
 #          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.
 #
 #  usage : check_buildoption( $option, $expected_val )
 # return : 0   - matches expected
 #          1   - does not match expected
 #          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[@]}"
 }