komposer dan penyelesaian baris perintah

Ketika saya menambahkan skrip saya semakin banyak ke file composer.json , akan berguna untuk memiliki autocomplete untuk perintah composer di bash . Pertanyaan saya di Twitter tidak memberikan solusi segera, dan karena saya sudah melakukan hal serupa untuk Phing , saya menyingsingkan lengan baju saya dan menulis solusi saya.


Kita mulai dengan membuat file penyelesaian bash baru bernama composer di direktori bash_completion.d (file perlu hak eksekusi). Direktori ini biasanya terletak di /etc/bash_completion.d/ , tetapi pada OS X menggunakan Homebrew terletak di /usr/local/etc/bash_completion.d/ (dengan asumsi Anda telah menginstal brew install bash-complete ).


Ini file tersebut:


 # 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 

(Perhatikan bahwa __ltrim_colon_completions hanya didukung dalam versi terbaru dari bash-complete , jadi Anda mungkin perlu menghapus baris ini.)


Untuk mendapatkan daftar perintah untuk komposer, kita membuat daftar kata untuk opsi -W untuk compgen dengan menjalankan composer --no-ansi dan kemudian menggunakan AWK untuk menghapus semua yang bukan perintah. Kami juga membuat daftar argumen bendera terpisah ketika pengguna menekan tombol Tab setelah tanda hubung dimasukkan.


Dengan menjalankan composer {cmd} -h --no-ansi , kami secara otomatis mengisi tanda untuk setiap perintah dan, menggunakan tr dan grep , batasi daftar hanya kata-kata yang dimulai dengan tanda hubung.


Sekarang dengan menekan Tab demi komposer, bash akan secara otomatis menyelesaikan perintah komposer dan skrip pengguna bawaan!



Seperti yang dapat Anda lihat dalam contoh ini, selain perintah bawaan seperti dump-autoload dan show , skrip saya sendiri akan ditampilkan, termasuk apiary-fetch dan lainnya.


Ini sangat berguna ketika memori gagal saya!

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


All Articles