إطار عمل CLI لـ Swift: إنشاء أدوات سطر الأوامر على iOS/macOS

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

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

ابدأ الدورة

إطار عمل CLI لـ Swift: إنشاء أدوات سطر الأوامر على iOS و macOS



ظل تطوير تطبيقات سطر الأوامر (CLI — Command Line Interface) للنظام البيئي لـ Apple لفترة طويلة حكراً على Python أو Ruby أو Bash. ومع ذلك، مع ظهور Swift ومجموعة أدواته القوية، بما في ذلك Swift Package Manager (SPM)، أصبح من الممكن إنشاء أدوات سطر أوامر سريعة ومكتوبة بقواعد كتابة صارمة وسهلة الصيانة باللغة الأصلية لـ iOS/macOS. في هذه المقالة، سنستعرض بالتفصيل الإطار الرئيسي لبناء CLI على Swift — Apple's ArgumentParser، بالإضافة إلى الحلول البديلة.



ما هو إطار عمل CLI لـ Swift؟



إطار عمل CLI هو مكتبة تتولى المهام الروتينية لتحليل وسائط سطر الأوامر، وإنشاء التعليمات، ومعالجة الأخطاء، وتنظيم الأوامر. في عالم Swift، المعيار الفعلي هو ArgumentParser، الذي طورته Apple وهو جزء من Swift Open Source. يسمح لك بوصف واجهة أداتك بشكل تصريحي، ويقوم هو بكل شيء آخر تلقائياً.



الإمكانيات الرئيسية لـ ArgumentParser:

  • تعريف الأوامر بشكل تصريحي — تصف الهيكل، ويقوم الإطار بتحليل الوسائط بنفسه.
  • تعليمات تلقائية — يتم إنشاء العلامات --help و -h تلقائياً.
  • دعم الأوامر المتداخلة (كما في git أو swift).
  • التحقق من صحة الأنواع — إذا كان متوقعاً رقم وتم إدخال نص، فسيتم عرض خطأ مفهوم.
  • التكامل مع SPM — يكفي إضافة تبعية في Package.swift.


التثبيت والإعداد



للعمل، ستحتاج إلى Swift 5.5+ (يوصى باستخدام 5.7 أو أحدث). أنشئ مشروع سطر أوامر جديد عبر SPM:



mkdir MyCLIcd MyCLIswift package init --type executable


ثم قم بتحرير Package.swift، بإضافة تبعية لـ ArgumentParser:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyCLI", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLI", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])


الآن قم بتحديث التبعيات وافتح المشروع:



swift package updateopen Package.swift   # سيفتح في Xcode


إنشاء الأمر الأول



أنشئ ملف main.swift (أو Sources/MyCLI/main.swift) بالمحتوى التالي:



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "تحية المستخدم", discussion: "هذا الأمر يطبع تحية مخصصة." )

@Argument(help: "اسم المستخدم") var name: String

@Option(name: .shortAndLong, help: "عدد مرات التكرار") var count: Int = 1

@Flag(name: .shortAndLong, help: "إظهار الإصدار") var verbose: Bool = false

mutating func run() throws { if verbose { print("الإصدار 1.0.0") } for _ in 0..<count { print("مرحباً، \\(name)!") } }}

Greet.main()


الآن قم ببناء وتشغيل:



swift run MyCLI Swift --count 3# الإخراج:# مرحباً، Swift!# مرحباً، Swift!# مرحباً، Swift!

swift run MyCLI --help# الاستخدام: MyCLI <name> [--count <count>] [--verbose]# تحية المستخدم# ...


الأوامر المتداخلة (الأوامر الفرعية)



لإنشاء أدوات معقدة (مثل

توصيات