Junio C Hamano <gits...@pobox.com> writes: > Ben Peart <benpe...@microsoft.com> writes: > >> +if test -n "$GIT_FSMONITOR_TEST" >> +then >> + if test -n "$GIT_TEST_FSMONITOR" >> + then >> + echo "warning: the GIT_FSMONITOR_TEST variable has been renamed >> to GIT_TEST_FSMONITOR" >> + else >> + echo "error: the GIT_FSMONITOR_TEST variable has been renamed >> to GIT_TEST_FSMONITOR" >> + exit 1 >> + fi >> +fi > > I would have expected that, because we are now doing multiple pairs > of variables in a single series, we would add a helper function that > can be called like so: > > check_var_migration GIT_FSMONITOR_TEST GIT_TEST_FSMONITOR > > in the earliest step. Perhaps something like this. > > check_var_migration () { > old_name=$1 new_name=$2 > eval "old_isset=\${${old_name}:+isset}" > eval "new_isset=\${${new_name}:+isset}" > case "$old_isset,$new_isset" in > isset,) > echo >&2 "error: $old_name is now $new_name" > exit 1 ;; > isset,isset) > # enable this, once $old_name no longer is valid anywhere > # echo >&2 "warning: $old_name is now $new_name" > # echo >&2 "hint: remove $old_name" > ;; > esac > }
Alternatively, we could do this, to warn and then migrate the value given to the old variable automatically to the new variable and let the test proceed. check_var_migration () { old_name=$1 new_name=$2 eval "old_isset=\${${old_name}:+isset}" eval "new_isset=\${${new_name}:+isset}" case "$old_isset,$new_isset" in isset,) echo >&2 "warning: $old_name is now $new_name" echo >&2 "hint: set $new_name too during the transition period" eval "$new_name=\$$old_name" ;; isset,isset) # do this later # echo >&2 "warning: $old_name is now $new_name" # echo >&2 "hint: remove $old_name" ;; esac }