Skip to content

Commit 35a43ae

Browse files
committed
refactor(ssh): accept dironly flag as an option
1 parent 1942220 commit 35a43ae

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

completions/ssh

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,19 @@ _comp_cmd_scp__path_esc='[][(){}<>"'"'"',:;^&!$=?`\\|[:space:]]'
481481
# types of the files.
482482
_comp_cmd_scp__escape_path()
483483
{
484-
local dirs_only=$1 escape_replacement=${2:-'\\&'}
484+
local OPTIND=1 OPTARG="" OPTERR=0 opt dirs_only=""
485+
while getopts ':d' _flag "$@"; do
486+
case $_flag in
487+
d) dirs_only=set ;;
488+
*)
489+
echo "bash_completion: $FUNCNAME: usage error: $*" >&2
490+
return 1
491+
;;
492+
esac
493+
done
494+
shift "$((OPTIND - 1))"
495+
local escape_replacement=${1:-'\\&'}
496+
485497
if [[ $dirs_only ]]; then
486498
# escape problematic characters; remove non-dirs
487499
command sed \
@@ -543,7 +555,8 @@ _comp_xfunc_scp_compgen_remote_files()
543555
local _files
544556
_files=$(ssh -o 'Batchmode yes' "$_userhost" \
545557
command ls -aF1dL "$_path*" 2>/dev/null |
546-
_comp_cmd_scp__escape_path "$_dirs_only" "$_escape_replacement")
558+
_comp_cmd_scp__escape_path ${_dirs_only:+'-d'} -- \
559+
"$_escape_replacement")
547560
_comp_compgen -R split -l -- "$_files"
548561
}
549562

@@ -570,7 +583,7 @@ _comp_xfunc_scp_compgen_local_files()
570583
_comp_expand_glob files '"$cur"*' || return 0
571584
_comp_compgen -RU files split -l ${1:+-P "$1"} -- "$(
572585
command ls -aF1dL "${files[@]}" 2>/dev/null |
573-
_comp_cmd_scp__escape_path "$_dirs_only"
586+
_comp_cmd_scp__escape_path ${_dirs_only:+'-d'}
574587
)"
575588
}
576589

0 commit comments

Comments
 (0)