diff options
author | Arfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org> | 2011-05-01 16:50:30 +0200 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-05-04 12:49:03 -0700 |
commit | d78d81084de5fe974ecebf64a7080914428f5afc (patch) | |
tree | 31d0e4ebf16e621084448d6692ea135f3cf4555f /bin | |
parent | 6bad76c08983995f2990341ced8af9a322d2913b (diff) | |
download | portage-d78d81084de5fe974ecebf64a7080914428f5afc.tar.gz portage-d78d81084de5fe974ecebf64a7080914428f5afc.tar.bz2 portage-d78d81084de5fe974ecebf64a7080914428f5afc.zip |
Support multiple arguments in set_unless_changed() and unset_unless_changed().
Use VARIABLE=VALUE syntax for arguments of set_unless_changed().
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/ebuild.sh | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh index e652cb55b..6593755cd 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -1639,32 +1639,39 @@ _ebuild_phase_funcs() { esac } -# Set given variable unless this variable has been already set (e.g. during emerge -# invocation) to a value different than value set in make.conf. +# Set given variables unless these variable have been already set (e.g. during emerge +# invocation) to values different than values set in make.conf. set_unless_changed() { - if [[ $# -ne 2 ]]; then - die "${FUNCNAME}() requires 2 arguments: VARIABLE VALUE" + if [[ $# -lt 1 ]]; then + die "${FUNCNAME}() requires at least 1 argument: VARIABLE=VALUE" fi - local variable="$1" value="$2" - - if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then - eval "${variable}=\"${value}\"" - fi + local argument value variable + for argument in "$@"; do + if [[ ${argument} != *=* ]]; then + die "${FUNCNAME}(): Argument '${argument}' has incorrect syntax" + fi + variable="${argument%%=*}" + value="${argument#*=}" + if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then + eval "${variable}=\"${value}\"" + fi + done } -# Unset given variable unless this variable has been set (e.g. during emerge -# invocation) to a value different than value set in make.conf. +# Unset given variables unless these variable have been set (e.g. during emerge +# invocation) to values different than values set in make.conf. unset_unless_changed() { - if [[ $# -ne 1 ]]; then - die "${FUNCNAME}() requires 1 argument: VARIABLE" + if [[ $# -lt 1 ]]; then + die "${FUNCNAME}() requires at least 1 argument: VARIABLE" fi - local variable="$1" - - if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then - unset ${variable} - fi + local variable + for variable in "$@"; do + if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then + unset ${variable} + fi + done } PORTAGE_BASHRCS_SOURCED=0 |