diff options
| author | Michael Biebl <biebl@debian.org> | 2021-10-01 23:05:04 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2021-10-01 23:05:04 +0200 |
| commit | e74c568b07b50b97873fb4ee1d776dedefbd54d6 (patch) | |
| tree | 3469f17ea9af91f7ff169b890633bda68b0cf76e /clients/cli/nmcli-completion | |
| parent | bfe522304da217296e2a61040f58e35ec5d6f3f2 (diff) | |
New upstream version 1.32.12 upstream/1.32.12
Diffstat (limited to 'clients/cli/nmcli-completion')
| -rw-r--r-- | clients/cli/nmcli-completion | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/clients/cli/nmcli-completion b/clients/cli/nmcli-completion deleted file mode 100644 index 45dfe89c..00000000 --- a/clients/cli/nmcli-completion +++ /dev/null @@ -1,116 +0,0 @@ -# nmcli(1) completion - -_nmcli_array_delete_at() -{ - eval "local ARRAY=(\"\${$1[@]}\")" - local i - local tmp=() - local lower=$2 - local upper=${3:-$lower} - - # for some reason the following fails. So this clumsy workaround... - # A=(a "") - # echo " >> ${#A[@]}" - # >> 2 - # A=("${A[@]:1}") - # echo " >> ${#A[@]}" - # >> 0 - # ... seriously??? - - for i in "${!ARRAY[@]}"; do - if [[ "$i" -lt "$2" || "$i" -gt "${3-$2}" ]]; then - tmp=("${tmp[@]}" "${ARRAY[$i]}") - fi - done - eval "$1=(\"\${tmp[@]}\")" -} - -_nmcli() -{ - local cur words cword i output - _init_completion || return - - # we don't care about any arguments after the current cursor position - # because we only parse from left to right. So, if there are some arguments - # right of the cursor, just ignore them. Also don't care about ${words[0]}. - _nmcli_array_delete_at words $((cword+1)) ${#words[@]} - _nmcli_array_delete_at words 0 - - # _init_completion returns the words with all the quotes and escaping - # characters. We don't care about them, drop them at first. - for i in ${!words[@]}; do - words[i]="$(printf '%s' "${words[i]}" | xargs printf '%s\n' 2>/dev/null || true)" - done - - # In case the cursor is not at the end of the line, - # $cur consists of spaces that we want do remove. - # For example: `nmcli connection modify id <TAB> lo` - if [[ "$cur" =~ ^[[:space:]]+ ]]; then - cur='' - fi - - output="$(nmcli --complete-args "${words[@]}" 2>/dev/null)" - - # Bail out early if we're completing a file name - if [ $? = 65 ]; then - compopt -o default - COMPREPLY=() - return 0 - fi - - local IFS=$'\n' - COMPREPLY=( $( compgen -W '$output' -- $cur ) ) - - # Now escape special characters (spaces, single and double quotes), - # so that the argument is really regarded a single argument by bash. - # See http://stackoverflow.com/questions/1146098/properly-handling-spaces-and-quotes-in-bash-completion - local escaped_single_quote="'\''" - local i=0 - local entry - for entry in ${COMPREPLY[*]} - do - if [[ "${cur:0:1}" == "'" ]]; then - # started with single quote, escaping only other single quotes - # [']bla'bla"bla\bla bla --> [']bla'\''bla"bla\bla bla - COMPREPLY[$i]="${entry//\'/${escaped_single_quote}}" - elif [[ "${cur:0:1}" == '"' ]]; then - # started with double quote, escaping all double quotes and all backslashes - # ["]bla'bla"bla\bla bla --> ["]bla'bla\"bla\\bla bla - entry="${entry//\\/\\\\}" - entry="${entry//\"/\\\"}" - entry="${entry//!/\"\\!\"}" - COMPREPLY[$i]="$entry" - else - # no quotes in front, escaping _everything_ - # [ ]bla'bla"bla\bla bla --> [ ]bla\'bla\"bla\\bla\ bla - entry="${entry//\\/\\\\}" - entry="${entry//\'/\'}" - entry="${entry//\"/\\\"}" - entry="${entry// /\\ }" - entry="${entry//\(/\\(}" - entry="${entry//)/\\)}" - entry="${entry//!/\\!}" - entry="${entry//&/\\&}" - COMPREPLY[$i]="$entry" - fi - (( i++ )) - done - - # Work-around bash_completion issue where bash interprets a colon - # as a separator. - # Colon is escaped here. Change "\\:" back to ":". - # See also: - # http://stackoverflow.com/questions/28479216/how-to-give-correct-suggestions-to-tab-complete-when-my-words-contains-colons - # http://stackoverflow.com/questions/2805412/bash-completion-for-maven-escapes-colon/12495727 - i=0 - for entry in ${COMPREPLY[*]} - do - entry="${entry//\\\\:/:}" - COMPREPLY[$i]=${entry} - (( i++ )) - done - -} && -complete -F _nmcli nmcli - -# ex: ts=4 sw=4 et filetype=sh |