[pacman-dev] [PATCH 01/10] libmakepkg/util/option: Refactor checking to reduce code duplication

Allan McRae allan at archlinux.org
Tue Jun 19 14:58:07 UTC 2018


On 01/06/18 02:24, Jan Alexander Steffens (heftig) wrote:
> Pull out the expected=y/n check into a separate function and make use of
> the fact we can just concatenate the fallback arrays to get the same
> result.
> ---

Breaks using options=(!strip) in a PKGBUILD.

>  scripts/libmakepkg/util/option.sh.in | 85 +++++++++-------------------
>  1 file changed, 28 insertions(+), 57 deletions(-)
> 
> diff --git a/scripts/libmakepkg/util/option.sh.in b/scripts/libmakepkg/util/option.sh.in
> index 46e0568d..28357e27 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[@]}"

These need switched.

>  }
>  
>  
>  ##
>  # 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 "$@" "${options[@]}" "${BUILDENV[@]}"

These need switched.

>  }
> 


More information about the pacman-dev mailing list