إزاي تعمل CLI Tools احترافية وتسهل حياتك مع Laravel Prompts
أكيد مريت بالموقف ده: بتبني مشروع كبير، وبتحتاج تعمل سكريبتات أتمتة (Automation Scripts) عشان تريح نفسك من المهام المتكررة زي ترحيل البيانات (Data Migration)، أو إنشاء ملفات إعدادات، أو حتى تنظيف الكاش. بتفتح التيرمينال (Terminal)، بتكتب أمر طويل وعريض، أو بتضطر تستخدم (Input) بدائية جداً بتخلي التعامل مع السكريبت كابوس.
المشكلة إننا كمبرمجين بنهمل واجهة المستخدم للتطبيقات اللي بتشتغل في الـ (Command Line Interface)، مع إنها الواجهة اللي بنقضي فيها أغلب وقتنا! هنا بيجي دور Laravel Prompts، المكتبة اللي غيرت قواعد اللعبة وخلت بناء أدوات الـ (CLI) تجربة ممتعة وسهلة وشكلها يشرف.
Table of contents [Show]
يعني إيه Laravel Prompts وليه لازم تستخدمها؟
مكتبة Laravel Prompts هي إضافة قوية جداً بتخليك تبني واجهات تفاعلية داخل التيرمينال. بدال ما تعتمد على (arguments) صعبة الحفظ أو (input) عادي، تقدر تعمل (Searchable selects)، (Multi-select)، (Progress bars)، وحتى (Spinners) عشان توضح للمستخدم إن فيه حاجة بتحصل في الخلفية.
المميز فيها إنها بتشتغل مع أي مشروع (PHP) مش بس (Laravel)، وده بيديها مرونة رهيبة في أي (Backend) بتطوره.
إزاي تبدأ وتثبت Laravel Prompts
الموضوع بسيط جداً، كل اللي محتاجه هو إنك تشغل أمر الـ (Composer) في فولدر المشروع بتاعك:
composer require laravel/prompts
بمجرد التثبيت، تقدر تستدعي الوظائف اللي محتاجها مباشرة في أي ملف (PHP) أو (Command) خاص بـ (Laravel). خلونا نشوف مثال عملي سريع.
بناء أول سكريبت تفاعلي (Interactive CLI)
تخيل إنك عايز تعمل سكريبت بيطلب من المطور يختار البيئة اللي عايز يرفع عليها الكود، ويحدد نوع العملية. بدل ما تستخدم (Ask) التقليدية، ممكن نعمل حاجة زي كده:
use function Laravel\Prompts\select;
use function Laravel\Prompts\text;
$environment = select(
label: 'اختار البيئة اللي عايز تشتغل عليها',
options: ['staging', 'production', 'local']
);
$version = text(
label: 'اكتب رقم الإصدار الجديد',
placeholder: 'مثلاً: v1.0.1',
required: true
);
هتلاقي التيرمينال فجأة قلب (UI) محترم، تقدر تتنقل فيه بالأسهم، وتختار اللي عايزه بكل سهولة. ده بيحول السكريبت العادي لأداة احترافية (Professional Tool) يقدر أي حد في الفريق يستخدمها من غير ما يغلط.
من أكتر الحاجات اللي بتضايق المستخدم هي "السكوت" بتاع التيرمينال لما السكريبت بياخد وقت. عشان كده Laravel Prompts وفرت (Spinners):
use function Laravel\Prompts\spin;
spin(function () {
// كود بيأخذ وقت طويل، زي استعلام قاعدة بيانات أو رفع ملف
sleep(2);
}, 'جاري معالجة البيانات...');
ده بيخلي تجربة المستخدم (User Experience) في الـ (CLI) أحسن بكتير، وبيحسسه إن السكريبت "صاحي" وشغال، مش مهنج.
نصيحة من أخ لمبرمج زميل
يا صديقي، قوة المبرمج مش بس في الكود اللي بيكتبه، لكن في الأدوات اللي بيصممها عشان يسهل يومه ويوم زمايله. لما تستثمر وقتك في بناء (CLI Tools) احترافية، أنت مش بس بتعمل كود، أنت بتعمل (Developer Experience - DX) مريحة لكل اللي هيستخدم أدواتك.
ابدأ بمشروع صغير، حول سكريبت قديم بتستخدمه بانتظام وخليه تفاعلي باستخدام الـ (Prompts). هتتفاجئ بالفرق في الإنتاجية والاحترافية اللي هتحس بيها. ولو عندك أي استفسار، التوثيق (Documentation) الخاص بـ لارافيل غني جداً بالأمثلة، ومتخافش تجرب وتغلط!