diff --git a/clean_files.txt b/clean_files.txt index 3d588f30..30ac90c6 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -63,6 +63,7 @@ plugins/available/xterm.plugin.bash completion/available/awless.completion.bash completion/available/brew.completion.bash completion/available/cargo.completion.bash +completion/available/composer.completion.bash completion/available/conda.completion.bash completion/available/consul.completion.bash completion/available/docker.completion.bash diff --git a/completion/available/composer.completion.bash b/completion/available/composer.completion.bash index be19fd27..eefe50fa 100644 --- a/completion/available/composer.completion.bash +++ b/completion/available/composer.completion.bash @@ -1,133 +1,129 @@ -#!/usr/bin/env bash +# shellcheck shell=bash +cite "about-completion" +about-completion "composer completion" -_composer() -{ - local cur script coms opts com - COMPREPLY=() - _get_comp_words_by_ref -n : cur words +function __composer_completion() { + local cur coms opts com + COMPREPLY=() + _get_comp_words_by_ref -n : cur words - # for an alias, get the real script behind it - if [[ $(type -t ${words[0]}) == "alias" ]]; then - script=$(alias ${words[0]} | sed -E "s/alias ${words[0]}='(.*)'/\1/") - else - script=${words[0]} - fi + # lookup for command + for word in "${words[@]:1}"; do + if [[ $word != -* ]]; then + com=$word + break + fi + done - # lookup for command - for word in ${words[@]:1}; do - if [[ $word != -* ]]; then - com=$word - break - fi - done + # completing for an option + if [[ ${cur} == --* ]]; then + opts="--help --quiet --verbose --version --ansi --no-ansi --no-interaction --profile --no-plugins --working-dir" - # completing for an option - if [[ ${cur} == --* ]] ; then - opts="--help --quiet --verbose --version --ansi --no-ansi --no-interaction --profile --no-plugins --working-dir" + case "$com" in + about) + opts="${opts} " + ;; + archive) + opts="${opts} --format --dir --file" + ;; + browse) + opts="${opts} --homepage --show" + ;; + clear-cache) + opts="${opts} " + ;; + config) + opts="${opts} --global --editor --auth --unset --list --file --absolute" + ;; + create-project) + opts="${opts} --stability --prefer-source --prefer-dist --repository --repository-url --dev --no-dev --no-custom-installers --no-scripts --no-progress --no-secure-http --keep-vcs --no-install --ignore-platform-reqs" + ;; + depends) + opts="${opts} --recursive --tree" + ;; + diagnose) + opts="${opts} " + ;; + dump-autoload) + opts="${opts} --no-scripts --optimize --classmap-authoritative --apcu --no-dev" + ;; + exec) + opts="${opts} --list" + ;; + global) + opts="${opts} " + ;; + help) + opts="${opts} --xml --format --raw" + ;; + init) + opts="${opts} --name --description --author --type --homepage --require --require-dev --stability --license --repository" + ;; + install) + opts="${opts} --prefer-source --prefer-dist --dry-run --dev --no-dev --no-custom-installers --no-autoloader --no-scripts --no-progress --no-suggest --optimize-autoloader --classmap-authoritative --apcu-autoloader --ignore-platform-reqs" + ;; + licenses) + opts="${opts} --format --no-dev" + ;; + list) + opts="${opts} --xml --raw --format" + ;; + outdated) + opts="${opts} --outdated --all --direct --strict" + ;; + prohibits) + opts="${opts} --recursive --tree" + ;; + remove) + opts="${opts} --dev --no-progress --no-update --no-scripts --update-no-dev --update-with-dependencies --no-update-with-dependencies --ignore-platform-reqs --optimize-autoloader --classmap-authoritative --apcu-autoloader" + ;; + require) + opts="${opts} --dev --prefer-source --prefer-dist --no-progress --no-suggest --no-update --no-scripts --update-no-dev --update-with-dependencies --ignore-platform-reqs --prefer-stable --prefer-lowest --sort-packages --optimize-autoloader --classmap-authoritative --apcu-autoloader" + ;; + run-script) + opts="${opts} --timeout --dev --no-dev --list" + ;; + search) + opts="${opts} --only-name --type" + ;; + self-update) + opts="${opts} --rollback --clean-backups --no-progress --update-keys --stable --preview --snapshot" + ;; + show) + opts="${opts} --all --installed --platform --available --self --name-only --path --tree --latest --outdated --minor-only --direct --strict" + ;; + status) + opts="${opts} " + ;; + suggests) + opts="${opts} --by-package --by-suggestion --no-dev" + ;; + update) + opts="${opts} --prefer-source --prefer-dist --dry-run --dev --no-dev --lock --no-custom-installers --no-autoloader --no-scripts --no-progress --no-suggest --with-dependencies --optimize-autoloader --classmap-authoritative --apcu-autoloader --ignore-platform-reqs --prefer-stable --prefer-lowest --interactive --root-reqs" + ;; + validate) + opts="${opts} --no-check-all --no-check-lock --no-check-publish --with-dependencies --strict" + ;; - case "$com" in - about) - opts="${opts} " - ;; - archive) - opts="${opts} --format --dir --file" - ;; - browse) - opts="${opts} --homepage --show" - ;; - clear-cache) - opts="${opts} " - ;; - config) - opts="${opts} --global --editor --auth --unset --list --file --absolute" - ;; - create-project) - opts="${opts} --stability --prefer-source --prefer-dist --repository --repository-url --dev --no-dev --no-custom-installers --no-scripts --no-progress --no-secure-http --keep-vcs --no-install --ignore-platform-reqs" - ;; - depends) - opts="${opts} --recursive --tree" - ;; - diagnose) - opts="${opts} " - ;; - dump-autoload) - opts="${opts} --no-scripts --optimize --classmap-authoritative --apcu --no-dev" - ;; - exec) - opts="${opts} --list" - ;; - global) - opts="${opts} " - ;; - help) - opts="${opts} --xml --format --raw" - ;; - init) - opts="${opts} --name --description --author --type --homepage --require --require-dev --stability --license --repository" - ;; - install) - opts="${opts} --prefer-source --prefer-dist --dry-run --dev --no-dev --no-custom-installers --no-autoloader --no-scripts --no-progress --no-suggest --optimize-autoloader --classmap-authoritative --apcu-autoloader --ignore-platform-reqs" - ;; - licenses) - opts="${opts} --format --no-dev" - ;; - list) - opts="${opts} --xml --raw --format" - ;; - outdated) - opts="${opts} --outdated --all --direct --strict" - ;; - prohibits) - opts="${opts} --recursive --tree" - ;; - remove) - opts="${opts} --dev --no-progress --no-update --no-scripts --update-no-dev --update-with-dependencies --no-update-with-dependencies --ignore-platform-reqs --optimize-autoloader --classmap-authoritative --apcu-autoloader" - ;; - require) - opts="${opts} --dev --prefer-source --prefer-dist --no-progress --no-suggest --no-update --no-scripts --update-no-dev --update-with-dependencies --ignore-platform-reqs --prefer-stable --prefer-lowest --sort-packages --optimize-autoloader --classmap-authoritative --apcu-autoloader" - ;; - run-script) - opts="${opts} --timeout --dev --no-dev --list" - ;; - search) - opts="${opts} --only-name --type" - ;; - self-update) - opts="${opts} --rollback --clean-backups --no-progress --update-keys --stable --preview --snapshot" - ;; - show) - opts="${opts} --all --installed --platform --available --self --name-only --path --tree --latest --outdated --minor-only --direct --strict" - ;; - status) - opts="${opts} " - ;; - suggests) - opts="${opts} --by-package --by-suggestion --no-dev" - ;; - update) - opts="${opts} --prefer-source --prefer-dist --dry-run --dev --no-dev --lock --no-custom-installers --no-autoloader --no-scripts --no-progress --no-suggest --with-dependencies --optimize-autoloader --classmap-authoritative --apcu-autoloader --ignore-platform-reqs --prefer-stable --prefer-lowest --interactive --root-reqs" - ;; - validate) - opts="${opts} --no-check-all --no-check-lock --no-check-publish --with-dependencies --strict" - ;; + esac - esac + # shellcheck disable=SC2207 + COMPREPLY=($(compgen -W "${opts}" -- "${cur}")) + __ltrim_colon_completions "$cur" - COMPREPLY=($(compgen -W "${opts}" -- ${cur})) - __ltrim_colon_completions "$cur" + return 0 + fi - return 0; - fi + # completing for a command + if [[ "$cur" == "$com" ]]; then + coms="about archive browse clear-cache config create-project depends diagnose dump-autoload exec global help init install licenses list outdated prohibits remove require run-script search self-update show status suggests update validate" - # completing for a command - if [[ $cur == $com ]]; then - coms="about archive browse clear-cache config create-project depends diagnose dump-autoload exec global help init install licenses list outdated prohibits remove require run-script search self-update show status suggests update validate" + # shellcheck disable=SC2207 + COMPREPLY=($(compgen -W "${coms}" -- "${cur}")) + __ltrim_colon_completions "$cur" - COMPREPLY=($(compgen -W "${coms}" -- ${cur})) - __ltrim_colon_completions "$cur" - - return 0 - fi + return 0 + fi } -complete -o default -F _composer composer +complete -o default -F __composer_completion composer