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