From d9711d8637425e5c12e2c8a39daaf35ed0bbad67 Mon Sep 17 00:00:00 2001 From: me Date: Thu, 22 Feb 2024 10:27:44 +0100 Subject: [PATCH] feat(completions/ssh): support globbing Include files and correct typo Co-authored-by: Koichi Murase --- completions/ssh.completion.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/completions/ssh.completion.sh b/completions/ssh.completion.sh index c8377e5..57fd125 100644 --- a/completions/ssh.completion.sh +++ b/completions/ssh.completion.sh @@ -5,6 +5,7 @@ _omb_module_require lib:omb-completion function _omb_completion_ssh { local cur + local additional_include_option local additional_include_defined_file _omb_completion_reassemble_breaks : @@ -20,9 +21,14 @@ function _omb_completion_ssh { fi # check if .ssh/config contains Include options - for additional_include_defined_file in $(awk -F' ' '/^ĂŽnclude/{print $2}' 2>/dev/null) ;do - # parse all defined hosts from that file - [[ -s "$additional_include_defined_file" ]] &&COMPREPLY+=($(compgen -W "$(grep ^Host "$additional_include_defined_file" | awk '{for (i=2; i<=NF; i++) print $i}' )" "${options[@]}")) + for additional_include_option in $(awk -F' ' '/^Include/{print $2}' "$HOME/.ssh/config" 2>/dev/null) ;do + # relative or absolute path, if relative transforms to absolute + [[ "${additional_include_option:0:1}" == "/" ]] ||additional_include_option="$HOME/.ssh/$additional_include_option" + # for loop to interpret possible globbing + for additional_include_defined_file in $additional_include_option ;do + # parse all defined hosts from that file + [[ -s "$additional_include_defined_file" ]] &&COMPREPLY+=($(compgen -W "$(grep ^Host "$additional_include_defined_file" | awk '{for (i=2; i<=NF; i++) print $i}' )" "${options[@]}")) + done done # parse all hosts found in .ssh/known_hosts