الملحن وإكمال سطر الأوامر

عندما أقوم بإضافة البرامج النصية الخاصة بي أكثر وأكثر إلى ملفات composer.json ، سيكون من المفيد أن يكون الإكمال التلقائي لأمر composer في bash . لم يقدم سؤالي على Twitter حلاً فوريًا ، وبما أنني كنت أفعل شيئًا مماثلاً Phing ، فقد Phing وكتبت حالي.


نبدأ بإنشاء ملف إكمال bash جديد يسمى composer في دليل bash_completion.d (يحتاج الملف إلى تنفيذ الحقوق). يوجد هذا الدليل عادةً في /etc/bash_completion.d/ ، ولكن على OS X باستخدام Homebrew ، يوجد في /usr/local/etc/bash_completion.d/ (على افتراض أنك قمت بالفعل brew install bash-complete /etc/bash_completion.d/ brew install bash-complete ).


هنا الملف:


 # 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 

(لاحظ أن __ltrim_colon_completions معتمد فقط في الإصدارات الحديثة من bash-complete __ltrim_colon_completions ، لذلك قد تحتاج إلى إزالة هذا السطر.)


للحصول على قائمة بالأوامر الخاصة بالملحن ، نقوم بإنشاء قائمة كلمات للخيار -W لـ compgen عن طريق تشغيل composer --no-ansi compgen composer --no-ansi ثم استخدام AWK لحذف كل شيء ليس أمرًا. نقوم أيضًا بإنشاء قائمة وسيطة إشارة منفصلة عندما يضغط المستخدم على المفتاح Tab بعد إدخال الواصلة.


من خلال تشغيل composer {cmd} -h --no-ansi ، نقوم تلقائيًا بملء الإشارات لأي أمر فرعي ، وباستخدام tr و grep ، نقوم بتقييد القائمة على الكلمات التي تبدأ فقط باستخدام الواصلة.


الآن عن طريق الضغط على Tab بعد الملحن ، ستكمل bash تلقائيًا كل من أوامر الملحن المضمنة ونصوص المستخدم!



كما ترون في هذا المثال ، بالإضافة إلى الأوامر المدمجة ، مثل dump-autoload ، يتم عرض البرامج النصية الخاصة بي ، بما في ذلك apiary-fetch وغيرها.


هذا مفيد للغاية عندما تفشل الذاكرة!

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


All Articles