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
# 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
# $
#
@ -94,7 +94,7 @@ function stash() {
if [[ $stash_which == $stash_expression ]]; 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
# Skip remaining work if we're not doing an assignment
@ -197,16 +197,18 @@ function get_autostash_array_name() {
function autostash() {
local run_from_autostash=1
local ret varname
local already_stashed=
while [[ -n $1 ]]; do
if [[ $1 == "alias" && $2 == *=* ]]; then
shift
local _stashing_alias_assign=1
fi
local already_stashed=
already_stashed=
stash "$1"
if [[ -z $already_stashed ]]; then
local ret varname=${1%%'='*}
varname=${1%%'='*}
get_autostash_array_name
eval "$ret=(\$$ret \$varname)"
fi

View File

@ -106,3 +106,23 @@ And once again where a value gets restored.
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
}}}