fix(yarn): fix yarn completion bug if 'cd' alias exists

This simply replaces all instances of 'cd' with 'builtin cd' in the yarn completion definition.

e.g. cd is redefined to ls new directory
```shell
cd () {
	builtin cd "$@"
	ls -G -laFhTG
}
```
this will cause an infinite loop when user invokes `yarn <tab>`

Signed-off-by: joél hawkins torres <joel@joel.fm>
This commit is contained in:
joél hawkins torres 2024-04-10 17:57:34 -07:00
commit c8e962d5bf
No known key found for this signature in database
GPG key ID: 358083CB78DA28BD

View file

@ -86,7 +86,7 @@ _global_commands=(
) )
_yarn_find_package_json() { _yarn_find_package_json() {
local dir=$(cd "$1" && pwd) local dir=$(builtin cd "$1" && pwd)
while true while true
do do
@ -109,7 +109,7 @@ _yarn_commands_scripts() {
if [[ -n $opt_args[--cwd] ]]; then if [[ -n $opt_args[--cwd] ]]; then
packageJson=$(_yarn_find_package_json $opt_args[--cwd]) packageJson=$(_yarn_find_package_json $opt_args[--cwd])
binaries=($(cd $opt_args[--cwd] && echo node_modules/.bin/*(x:t))) binaries=($(builtin cd $opt_args[--cwd] && echo node_modules/.bin/*(x:t)))
else else
packageJson=$(_yarn_find_package_json $pwd) packageJson=$(_yarn_find_package_json $pwd)
binaries=($(echo node_modules/.bin/*(x:t))) binaries=($(echo node_modules/.bin/*(x:t)))
@ -130,9 +130,9 @@ _yarn_scripts() {
if [[ -n $_yarn_run_cwd ]]; then if [[ -n $_yarn_run_cwd ]]; then
packageJson=$(_yarn_find_package_json $_yarn_run_cwd) packageJson=$(_yarn_find_package_json $_yarn_run_cwd)
if [[ -d "${_yarn_run_cwd}/node_modules" ]]; then if [[ -d "${_yarn_run_cwd}/node_modules" ]]; then
binaries=($(cd $_yarn_run_cwd && echo node_modules/.bin/*(x:t))) binaries=($(builtin cd $_yarn_run_cwd && echo node_modules/.bin/*(x:t)))
else else
binaries=($(cd $_yarn_run_cwd && yarn bin | perl -wln -e 'm{^[^:]+: (\S+)$} and print $1')) binaries=($(builtin cd $_yarn_run_cwd && yarn bin | perl -wln -e 'm{^[^:]+: (\S+)$} and print $1'))
fi fi
else else
packageJson=$(_yarn_find_package_json $pwd) packageJson=$(_yarn_find_package_json $pwd)