From fc94bfd774277ecb76f6b960c444126aa5802a6d Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Mon, 27 Mar 2023 10:12:31 -0400 Subject: [PATCH] Updated Bash completion to reflect zsh completion behavior Former-commit-id: ea8d14d76e85500eb1d2a27884b068dc302ea225 Former-commit-id: c631d938ccf3aa6131f54e12249a983f74d4a09d --- extra/completion.bash | 49 +++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/extra/completion.bash b/extra/completion.bash index b177b4f..13ffa5a 100755 --- a/extra/completion.bash +++ b/extra/completion.bash @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# sshyp(1) completion _path_gen() { local sshyp_path="$HOME/.local/share/sshyp" @@ -11,35 +11,30 @@ _path_gen() { done } && -# from this point, this completions script was partially generated by -# completely (https://github.com/dannyben/completely) - _sshyp_completions() { local cur=${COMP_WORDS[COMP_CWORD]} - local compwords=("${COMP_WORDS[@]:1:$COMP_CWORD-1}") - local compline="${compwords[*]}" + local prev=${COMP_WORDS[COMP_CWORD-1]} - if [ "${#COMP_WORDS[@]}" -gt "2" ] && echo "${COMP_WORDS[@]}" | grep -q 'shear'; then - return - elif [ "${#COMP_WORDS[@]}" -gt "3" ] && (! echo "${COMP_WORDS[@]}" | grep -q '/' || echo "${COMP_WORDS[@]}" | grep -q 'shear'); then - return - elif [ "${#COMP_WORDS[@]}" -gt "4" ]; then - return - fi - - if [[ "$compline" == *'edit'* ]]; then - while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "relocate username password note url" -- "$cur" ) - elif [[ "$compline" == *'copy'* ]]; then - while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "username password url note" -- "$cur" ) - elif [[ "$compline" == *'add'* ]]; then - while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "password note folder" -- "$cur" ) - elif [[ "$compline" == *'gen'* ]]; then - while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "update" -- "$cur" ) - elif [[ "$compline" == '/'* ]]; then - while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "add gen edit copy shear" -- "$cur" ) - else - while read -r; do ITEM=${REPLY// /\\ }; COMPREPLY+=( "$ITEM" ); done < <( compgen -W "help version tweak add gen edit copy shear sync $(printf "'%s' " "${trimmed_paths[@]}")" -- "$cur" ) - fi + case $prev in + sshyp ) + while read -r; do ITEM=${REPLY// /\\ }; COMPREPLY+=( "$ITEM" ); done < <( compgen -W "$(printf "'%s' " "${trimmed_paths[@]}")" -- "$cur" ) + ;; + /* ) + while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "add edit copy gen shear" -- "$cur" ) + ;; + add ) + while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "folder note password" -- "$cur" ) + ;; + copy ) + while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "note password url username" -- "$cur" ) + ;; + edit ) + while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "note password relocate url username" -- "$cur" ) + ;; + gen ) + while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "update" -- "$cur" ) + ;; + esac } && _path_gen && complete -F _sshyp_completions sshyp