عندما أقوم بإضافة البرامج النصية الخاصة بي أكثر وأكثر إلى ملفات 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
).
هنا الملف:
(لاحظ أن __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
وغيرها.
هذا مفيد للغاية عندما تفشل الذاكرة!