أدوات CLI بلغة Swift: إنشاء أدوات سطر الأوامر من الصفر

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أول أداة CLI لك بلغة Swift: من الفكرة إلى الأداة الجاهزة

\n\n

هل تساءلت يومًا كيف يتم إنشاء تلك الأدوات المفيدة في الطرفية — curl، git، brew؟ اتضح أن كتابة أداة CLI خاصة بك بلغة Swift ليست أصعب من إنشاء تطبيق iOS بسيط. بل أكثر من ذلك، Swift مثالي لهذا: فهو سريع، آمن في الذاكرة، ويعمل بشكل ممتاز على كل من macOS و Linux.

\n\n

في هذه المقالة، سننشئ من الصفر أداة وحدة تحكم كاملة تقوم بتحليل الوسائط، وعرض نص ملون، وحتى معالجة الأخطاء. ستتعلم كيفية إعداد المشروع عبر Swift Package Manager، وربط المكتبة القوية ArgumentParser، وتجهيز الأداة للنشر في Homebrew. هل أنت مستعد؟ هيا بنا!

\n\n

لماذا Swift لـ CLI رائع؟

\n\n

عندما يتعلق الأمر بإنشاء أدوات سطر الأوامر، يفكر الكثيرون فورًا في Python أو Bash أو Go. لكن Swift هو الحصان الأسود الذي يفاجئ:

\n\n
    \n
  • سرعة بمستوى C — أداتك ستطير.
  • \n
  • عمل آمن مع الذاكرة — لا segfault ولا تسريبات.
  • \n
  • تعدد المنصات — Swift يعمل بشكل ممتاز على Linux، مما يعني أنه يمكن تشغيل CLI الخاص بك حتى على الخوادم.
  • \n
  • بناء جملة حديث — الكود يُقرأ كنثر جيد.
  • \n
  • نظام بيئي ضخم — Swift Package Manager (SPM) يمنحك الوصول إلى آلاف المكتبات.
  • \n
\n\n

بالمناسبة، إذا كنت تكتب بالفعل بلغة Python وتريد تجربة شيء جديد لـ CLI، فسيكون Swift اختيارًا ممتازًا: ستحصل على ملف ثنائي أصلي بدون تبعيات وبأقل استهلاك للذاكرة.

\n\n

إعداد المشروع: Swift Package Manager

\n\n

أولاً، سننشئ مشروعًا جديدًا. افتح الطرفية ونفذ:

\n\n
mkdir MyCLI\ncd MyCLI\nswift package init --type executable
\n\n

سينشئ الأمر هيكل SPM قياسي. لاحظ ملف Package.swift — هذا هو قلب مشروعك. سنقوم بتعديله لإضافة تبعية إلى Apple/Swift ArgumentParser:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyCLI",\n    dependencies: [\n        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyCLI",\n            dependencies: [\n                .product(name: "ArgumentParser", package: "swift-argument-parser")\n            ]\n        )\n    ]\n)
\n\n

الآن نفذ swift build. سيقوم SPM بتنزيل المكتبة وبناء المشروع. إذا نجح كل شيء — فأنت جاهز لكتابة الكود!

\n\n

كتابة الأمر الأول: Hello World معزز

\n\n

لنفتح Sources/MyCLI/main.swift ونكتب أمرًا بسيطًا يعرض تحية. لكن ليس مجرد "Hello, World!"، بل باستخدام الوسائط:

\n\n
import ArgumentParser\n\nstruct HelloCommand: ParsableCommand {\n    static let configuration = CommandConfiguration(\n        commandName: "hello",\n        abstract: "يعرض تحية",\n        discussion: "استخدم هذا الأمر لتحية العالم أو شخص معين."\n    )\n\n    @Argument(help: "اسم الشخص المراد تحيته")\n    var name: String = "World"\n\n    @Option(name: .shortAndLong, help: "عدد التكرارات")\n    var count: Int = 1\n\n    func run() throws {\n        for _ in 0..<count {\n            print("مرحبًا، \\(name)! 👋")\n        }\n    }\n}\n\nHelloCommand.main()
\n\n

شغّل: swift run MyCLI hello --count 3 "iOS Developer". سترى:

\n\n
مرحبًا، iOS Developer! 👋\nمرحبًا، iOS Developer! 👋\nمرحبًا، iOS Developer! 👋
\n\n

لاحظ: Argumen

المدونات

توصيات الكتب