Fix use of local in while loop. (#66)

For some reason it did not fail on Travis when only pushing the test
first?!

Also adds punctuation to already-stashed msg.
This commit is contained in:
Daniel Hahler 2017-05-16 22:58:25 +02:00 committed by GitHub
parent 738e6e965d
commit 4aeb48a02e
2 changed files with 26 additions and 4 deletions

View File

@ -44,7 +44,7 @@
# #
# $ stash FOO # $ stash FOO
# $ stash FOO # $ stash FOO
# You have already stashed FOO, please specify "-f" if you want to overwrite another stashed value # You have already stashed FOO, please specify "-f" if you want to overwrite another stashed value.
# $ stash -f FOO # $ stash -f FOO
# $ # $
# #
@ -94,7 +94,7 @@ function stash() {
if [[ $stash_which == $stash_expression ]]; then if [[ $stash_which == $stash_expression ]]; then
if [[ -z $run_from_smartcd ]]; then if [[ -z $run_from_smartcd ]]; then
echo "You have already stashed $stash_which, please specify \"-f\" if you want to overwrite another stashed value" echo "You have already stashed $stash_which, please specify \"-f\" if you want to overwrite another stashed value."
fi fi
# Skip remaining work if we're not doing an assignment # Skip remaining work if we're not doing an assignment
@ -197,16 +197,18 @@ function get_autostash_array_name() {
function autostash() { function autostash() {
local run_from_autostash=1 local run_from_autostash=1
local ret varname
local already_stashed=
while [[ -n $1 ]]; do while [[ -n $1 ]]; do
if [[ $1 == "alias" && $2 == *=* ]]; then if [[ $1 == "alias" && $2 == *=* ]]; then
shift shift
local _stashing_alias_assign=1 local _stashing_alias_assign=1
fi fi
local already_stashed= already_stashed=
stash "$1" stash "$1"
if [[ -z $already_stashed ]]; then if [[ -z $already_stashed ]]; then
local ret varname=${1%%'='*} varname=${1%%'='*}
get_autostash_array_name get_autostash_array_name
eval "$ret=(\$$ret \$varname)" eval "$ret=(\$$ret \$varname)"
fi fi

View File

@ -106,3 +106,23 @@ And once again where a value gets restored.
orig_2 orig_2
}}} }}}
autostash does not issue a warning, and no other output. {{{
$ autostash something=1 something_else=2
$ echo $something $something_else
1 2
$ stash something=1.2 something_else=2.2
$ echo $something $something_else
1.2 2.2
$ stash something something_else
You have already stashed something, please specify "-f" if you want to overwrite another stashed value.
You have already stashed something_else, please specify "-f" if you want to overwrite another stashed value.
Should not be set anymore.
$ autounstash
$ echo ${+something} ${+something_else}
0 0
}}}