From a8695edc8f51ff4e44bc9f0072a96c5ff275c3ff Mon Sep 17 00:00:00 2001 From: Gurkirat Singh Date: Sun, 10 Jan 2021 19:23:26 +0530 Subject: [PATCH 1/2] formatted gem completion --- clean_files.txt | 1 + completion/available/gem.completion.bash | 65 ++++++++++-------------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/clean_files.txt b/clean_files.txt index 54cf3152..1e9a7bb1 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -64,6 +64,7 @@ completion/available/conda.completion.bash completion/available/consul.completion.bash completion/available/docker.completion.bash completion/available/gcloud.completion.bash +completion/available/gem.completion.bash completion/available/github-cli.completion.bash completion/available/helm.completion.bash completion/available/knife.completion.bash diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash index 2d098529..8ce359f7 100644 --- a/completion/available/gem.completion.bash +++ b/completion/available/gem.completion.bash @@ -1,41 +1,32 @@ -#!/usr/bin/env bash -# Completion for gem +# shellcheck shell=bash +cite "about-completion" +about-completion "gem completion" -_installcomp() { - if [ -z "$REMOTE_GEMS" ] - then - REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') ) - fi +__gem_completion() { + local cur=${COMP_WORDS[COMP_CWORD]} + local prev=${COMP_WORDS[COMP_CWORD - 1]} + case $prev in + install) + # list the remote gems and add to completion + if [ -z "$REMOTE_GEMS" ]; then + REMOTE_GEMS=($(gem list --remote --no-versions | sed 's/\*\*\* REMOTE GEMS \*\*\*//' | tr '\n' ' ')) + fi - local cur=${COMP_WORDS[COMP_CWORD]} - COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) ) + local cur=${COMP_WORDS[COMP_CWORD]} + COMPREPLY=($(compgen -W "${REMOTE_GEMS[*]}" -- "$cur")) + ;; + uninstall) + # list all local installed gems and add to completion + if [ -z "$LOCAL_GEMS" ]; then + LOCAL_GEMS=($(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ')) + fi + + local cur=${COMP_WORDS[COMP_CWORD]} + COMPREPLY=($(compgen -W "${LOCAL_GEMS[*]}" -- "$cur")) + ;; + esac + local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which) + COMPREPLY=($(compgen -W "${commands[*]}" -- "$cur")) } -_uninstallcomp() { - if [ -z "$LOCAL_GEMS" ] - then - LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') ) - fi - - local cur=${COMP_WORDS[COMP_CWORD]} - COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) ) -} - -_gem() { - local cur=${COMP_WORDS[COMP_CWORD]} - local prev=${COMP_WORDS[COMP_CWORD-1]} - case $prev in - install) - _installcomp - return 0 - ;; - uninstall) - _uninstallcomp - return 0 - ;; - esac - local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which) - COMPREPLY=( $(compgen -W "${commands[*]}" -- $cur) ) -} - -complete -F _gem gem +complete -F __gem_completion gem From 42695c22d08f0696669282b5962e492f091bf64c Mon Sep 17 00:00:00 2001 From: Noah Gorny Date: Sat, 23 Jan 2021 00:13:54 +0200 Subject: [PATCH 2/2] completion: gem: Fix completion file --- completion/available/gem.completion.bash | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash index 8ce359f7..ab07a133 100644 --- a/completion/available/gem.completion.bash +++ b/completion/available/gem.completion.bash @@ -9,23 +9,26 @@ __gem_completion() { install) # list the remote gems and add to completion if [ -z "$REMOTE_GEMS" ]; then - REMOTE_GEMS=($(gem list --remote --no-versions | sed 's/\*\*\* REMOTE GEMS \*\*\*//' | tr '\n' ' ')) + read -r -a REMOTE_GEMS <<< "$(gem list --remote --no-versions | sed 's/\*\*\* REMOTE GEMS \*\*\*//' | tr '\n' ' ')" fi local cur=${COMP_WORDS[COMP_CWORD]} + # shellcheck disable=SC2207 COMPREPLY=($(compgen -W "${REMOTE_GEMS[*]}" -- "$cur")) + return 0 ;; uninstall) # list all local installed gems and add to completion - if [ -z "$LOCAL_GEMS" ]; then - LOCAL_GEMS=($(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ')) - fi + read -r -a LOCAL_GEMS <<< "$(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ')" local cur=${COMP_WORDS[COMP_CWORD]} + # shellcheck disable=SC2207 COMPREPLY=($(compgen -W "${LOCAL_GEMS[*]}" -- "$cur")) + return 0 ;; esac local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which) + # shellcheck disable=SC2207 COMPREPLY=($(compgen -W "${commands[*]}" -- "$cur")) }