fix directory arg handling
1 file changed, 39 insertions(+), 36 deletions(-)
changed files
M functions/scriptura.fish → functions/scriptura.fish
@@ -25,64 +25,67 @@ return 0 end set --function target $SCRIPTURA_ROOT - set --function stop_search 0 + set --function valid 0 for i in (seq 1 (count $argv)) if test "$argv[$i]" = -- - set --function stop_search $i + set --function valid $i break else if path is --type dir $target/$argv[$i] set --function target $target/$argv[$i] + set --function valid $i else if path is --type file $target/$argv[$i]; or set --query _flag_new set --function script $target/$argv[$i] set --function target $target/$argv[$i] + set --function valid $i break else break end end - set --local begin (math $i + 1) - if test $begin -gt (count $argv) - set begin 1 - end - set --local remaining $argv[$begin..-1] + set --local remaining $argv[(math $valid + 1)..-1] - if set --query _flag_help - __scriptura_help $target - return $status - end + if test $valid -gt 0 - if set --query _flag_new - __scriptura_new $target - return $status - end + if set --query _flag_help + __scriptura_help $target + return $status + end - if set --query _flag_edit - __scriptura_edit $target - return $status - end + if set --query _flag_new + __scriptura_new $target + return $status + end - if set --query _flag_which - __scriptura_which $target $remaining - return $status - end + if set --query _flag_edit + __scriptura_edit $target + return $status + end - if set --query _flag_cat - __scriptura_cat $target - return $status - end + if set --query _flag_which + __scriptura_which $target $remaining + return $status + end - if set --query script - if path is --perm exec $target - $target $remaining - else - echo "scriptura: $target is not executable" >&2 + if set --query _flag_cat __scriptura_cat $target + return $status end - else if path is --type dir $target; and test $stop_search -gt 0 - __scriptura_list $target - else - echo "scriptura: don't know what to do with target \"$remaining\"" >&2 + + if set --query script + if path is --perm exec $target + $target $remaining + return $status + else + echo "scriptura: $target is not executable" >&2 + __scriptura_cat $target + return $status + end + else if path is --type dir $target; and test (count $remaining) -eq 0 + __scriptura_list $target + return $status + end end + echo "scriptura: don't know what to do with target \"$argv\"" >&2 end