compositor y terminación de línea de comando

A medida que agrego mis scripts cada vez más a los archivos composer.json , sería útil tener el autocompletado para el comando composer en bash . Mi pregunta en Twitter no dio una solución inmediata, y como ya estaba haciendo algo similar para Phing , me arremangué y escribí mi solución.


Comenzamos creando un nuevo archivo de finalización de bash llamado composer en el directorio bash_completion.d (el archivo necesita derechos de ejecución). Este directorio generalmente se encuentra en /etc/bash_completion.d/ , pero en OS X con Homebrew se encuentra en /usr/local/etc/bash_completion.d/ (suponiendo que ya haya instalado brew install bash-complete ).


Aquí está el archivo:


 # Store this file in /etc/bash_completion.d/composer _composer_scripts() { local cur prev _get_comp_words_by_ref -n : cur COMPREPLY=() prev="${COMP_WORDS[COMP_CWORD-1]}" # # Complete the arguments to some of the commands. # if [ "$prev" != "composer" ] ; then local opts=$(composer $prev -h --no-ansi | tr -cs '[=-=][:alpha:]_' '[\n*]' | grep '^-') COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 fi if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '-h -q -v -V -n -d \ --help --quiet --verbose --version --ansi --no-ansi \ --no-interaction --profile --working-dir' -- "$cur" ) ) else local scripts=$(composer --no-ansi 2> /dev/null | awk '/^ +[az]+/ { print $1 }') COMPREPLY=( $(compgen -W "${scripts}" -- ${cur}) ) fi __ltrim_colon_completions "$cur" return 0 } complete -F _composer_scripts composer 

(Tenga en cuenta que __ltrim_colon_completions solo se admite en versiones recientes de bash-complete , por lo que es posible que deba eliminar esta línea).


Para obtener una lista de comandos para composer, creamos una lista de palabras para la opción -W para compgen ejecutando composer --no-ansi y luego usamos AWK para eliminar todo lo que no es un comando. También creamos una lista de argumentos de bandera separada cuando el usuario presiona la tecla Tab después de ingresar el guión.


Al ejecutar el composer {cmd} -h --no-ansi , completamos automáticamente los indicadores de cualquier subcomando y, usando tr y grep , restringimos la lista a solo palabras que comienzan con un guión.


¡Ahora presionando Tab después del compositor, bash completará automáticamente los comandos incorporados del compositor y los scripts de usuario!



Como puede ver en este ejemplo, además de los comandos integrados como dump-autoload y show , se show mis propios scripts, incluidos apiary-fetch y otros.


¡Esto es muy útil cuando la memoria me falla!

Source: https://habr.com/ru/post/444284/


All Articles