Swift के लिए CLI फ्रेमवर्क: iOS और macOS के लिए शक्तिशाली कंसोल उपयोगिताएँ बनाना
Swift केवल मोबाइल एप्लिकेशन की भाषा नहीं है। Swift Package Manager (SPM) और ArgumentParser जैसे फ्रेमवर्क के आगमन के साथ, डेवलपर्स को macOS और यहाँ तक कि iOS (सर्वर या CI/CD प्रक्रियाओं के भाग के रूप में) के लिए पूर्ण कंसोल टूल बनाने की क्षमता मिल गई है। Swift के लिए CLI (कमांड लाइन इंटरफ़ेस) फ्रेमवर्क कमांड लाइन आर्गुमेंट को पार्स करने, फ्लैग, विकल्प और उप-कमांड को संसाधित करने, और स्वचालित सहायता उत्पन्न करने की अनुमति देते हैं।
इस लेख में, हम सबसे लोकप्रिय और आधिकारिक CLI फ्रेमवर्क में से एक — Swift ArgumentParser (Apple द्वारा विकसित) पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि इसे SPM के माध्यम से कैसे स्थापित करें, एक सरल कंसोल टूल कैसे लिखें, उप-कमांड और आर्गुमेंट कैसे जोड़ें, और वास्तविक कार्यों के लिए कोड उदाहरण देखेंगे।
Swift के लिए CLI फ्रेमवर्क क्या है?
CLI फ्रेमवर्क एक लाइब्रेरी है जो कमांड लाइन स्ट्रिंग को पार्स करने का नियमित कार्य संभालती है। CommandLine.arguments पर मैन्युअल रूप से लूप लिखने के बजाय, आप कमांड की संरचना को घोषणात्मक रूप से वर्णित करते हैं: कौन से आर्गुमेंट अनिवार्य हैं, कौन से वैकल्पिक हैं, कौन से फ्लैग समर्थित हैं। फ्रेमवर्क स्वचालित रूप से सहायता (--help) उत्पन्न करता है और इनपुट त्रुटियों को संभालता है।
Swift ArgumentParser की मुख्य विशेषताएं:
- आर्गुमेंट और विकल्पों का घोषणात्मक विवरण
- स्वचालित सहायता और संस्करण निर्माण
- उप-कमांड के लिए समर्थन (जैसे
git commitयाswift buildमें) - प्रकार सत्यापन (Int, String, Double और कस्टम)
- SPM और Xcode के साथ एकीकरण
Swift Package Manager के माध्यम से स्थापना
अपने प्रोजेक्ट के Package.swift में निर्भरता जोड़ें:
// swift-tools-version:5.9import PackageDescription
let package = Package( name: "MyCLITool", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLITool", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])अब swift build चलाएँ — लाइब्रेरी डाउनलोड और कंपाइल हो जाएगी।
पहला कमांड लिखना
एक सरल उपयोगिता बनाते हैं जो उपयोगकर्ता को नाम और आयु के साथ अभिवादन करती है।
import ArgumentParser
struct Greet: ParsableCommand { @Argument(help: "उपयोगकर्ता का नाम") var name: String
@Option(name: .shortAndLong, help: "आयु") var age: Int?
mutating func run() throws { if let age = age { print("नमस्ते, \\(name)! आपकी आयु \\(age) वर्ष है।") } else { print("नमस्ते, \\(name)!") } }}
Greet.main()संकलित बाइनरी चलाएँ:
./MyCLITool "अन्ना" --age 25# आउटपुट: नमस्ते, अन्ना! आपकी आयु 25 वर्ष है।
./MyCLITool "मैक्सिम"# आउटपुट: नमस्ते, मैक्सिम!स्वचालित रूप से उत्पन्न सहायता (--help) सभी आर्गुमेंट और विकल्प दिखाएगी।
उप-कमांड: वास्तविक उपयोगिताओं जैसी संरचना
अक्सर CLI टूल में कई उप-कमांड होते हैं: create, delete, list। ArgumentParser इसे बॉक्स से बाहर समर्थन करता है।
import ArgumentParser
struct TaskManager: ParsableCommand { static var configuration = CommandConfiguration( subcommands: [Add.self, List.self, Delete.self] )}
struct Add: ParsableCommand { @Argument(help: "कार्य का पाठ") var text: String
func run() { print("कार्य जोड़ा गया: \\(text)") }}
struct List: ParsableCommand { func run() { print("कार्यों की सूची:")