From fb9d8043e75d1fe31131d09707e751d0be03fbad Mon Sep 17 00:00:00 2001 From: Tugdual Saunier Date: Tue, 11 Jun 2024 17:21:59 +0200 Subject: [PATCH] [Console] Allow Symfony CLI to override how the console should be executed during autocompletion --- src/Symfony/Component/Console/CHANGELOG.md | 5 +++++ .../Component/Console/Resources/completion.bash | 3 ++- .../Component/Console/Resources/completion.fish | 13 ++++++++++++- .../Component/Console/Resources/completion.zsh | 3 ++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Console/CHANGELOG.md b/src/Symfony/Component/Console/CHANGELOG.md index 25d7f7179723c..d5bc286f57e09 100644 --- a/src/Symfony/Component/Console/CHANGELOG.md +++ b/src/Symfony/Component/Console/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +7.2 +--- + + * Allow to override the command used to execute the application during autocompletion + 7.1 --- diff --git a/src/Symfony/Component/Console/Resources/completion.bash b/src/Symfony/Component/Console/Resources/completion.bash index 0d76eacc3b748..dbbef57e4cccd 100644 --- a/src/Symfony/Component/Console/Resources/completion.bash +++ b/src/Symfony/Component/Console/Resources/completion.bash @@ -18,7 +18,8 @@ _sf_{{ COMMAND_NAME }}() { # Use newline as only separator to allow space in completion values IFS=$'\n' - local sf_cmd="${COMP_WORDS[0]}" + # _SF_CMD allows Symfony CLI to tell us to use a different command to run the console + local sf_cmd="${_SF_CMD:-${COMP_WORDS[0]}}" # for an alias, get the real script behind it sf_cmd_type=$(type -t $sf_cmd) diff --git a/src/Symfony/Component/Console/Resources/completion.fish b/src/Symfony/Component/Console/Resources/completion.fish index 1853dd80f09ed..72bebef5cccb9 100644 --- a/src/Symfony/Component/Console/Resources/completion.fish +++ b/src/Symfony/Component/Console/Resources/completion.fish @@ -9,7 +9,18 @@ function _sf_{{ COMMAND_NAME }} set sf_cmd (commandline -o) set c (count (commandline -oc)) - set completecmd "$sf_cmd[1]" "_complete" "--no-interaction" "-sfish" "-a{{ VERSION }}" + # _SF_CMD allows Symfony CLI to tell us to use a different command to run the console + if set -q _SF_CMD; and test -n _SF_CMD + for i in $_SF_CMD + if [ $i != "" ] + set completecmd $completecmd "$i" + end + end + else + set completecmd $completecmd $sf_cmd[1] + end + + set completecmd $completecmd "_complete" "--no-interaction" "-sfish" "-a{{ VERSION }}" for i in $sf_cmd if [ $i != "" ] diff --git a/src/Symfony/Component/Console/Resources/completion.zsh b/src/Symfony/Component/Console/Resources/completion.zsh index ff76fe5fa981c..cdd08ae0b584a 100644 --- a/src/Symfony/Component/Console/Resources/completion.zsh +++ b/src/Symfony/Component/Console/Resources/completion.zsh @@ -33,7 +33,8 @@ _sf_{{ COMMAND_NAME }}() { fi # Prepare the command to obtain completions - requestComp="${words[0]} ${words[1]} _complete --no-interaction -szsh -a{{ VERSION }} -c$((CURRENT-1))" i="" + # _SF_CMD allows Symfony CLI to tell us to use a different command to run the console + requestComp="${words[0]} ${_SF_CMD:-${words[1]}} _complete --no-interaction -szsh -a{{ VERSION }} -c$((CURRENT-1))" i="" for w in ${words[@]}; do w=$(printf -- '%b' "$w") # remove quotes from typed values