Swift के लिए CLI फ्रेमवर्क: iOS और macOS पर कंसोल उपयोगिताएँ बनाना
Apple इकोसिस्टम के लिए कंसोल एप्लिकेशन (CLI — Command Line Interface) का विकास लंबे समय तक Python, Ruby या Bash का विशेषाधिकार रहा। हालाँकि, Swift और इसके शक्तिशाली टूलकिट, जिसमें Swift Package Manager (SPM) शामिल है, के आगमन के साथ, iOS/macOS की मूल भाषा में तेज़, टाइप-सेफ और आसानी से रखरखाव योग्य कंसोल उपयोगिताएँ बनाना संभव हो गया। इस लेख में, हम Swift पर CLI बनाने के लिए मुख्य फ्रेमवर्क — Apple's ArgumentParser, साथ ही वैकल्पिक समाधानों पर विस्तार से चर्चा करेंगे।
Swift के लिए CLI फ्रेमवर्क क्या है?
CLI-फ्रेमवर्क एक लाइब्रेरी है जो कमांड लाइन आर्गुमेंट्स को पार्स करने, सहायता उत्पन्न करने, त्रुटियों को संभालने और कमांड को व्यवस्थित करने जैसे नियमित कार्यों को संभालती है। Swift की दुनिया में, Apple द्वारा विकसित और Swift Open Source का हिस्सा ArgumentParser डी-फैक्टो मानक है। यह आपको अपनी उपयोगिता के इंटरफ़ेस को घोषणात्मक रूप से वर्णित करने की अनुमति देता है, और बाकी सब कुछ स्वचालित रूप से करता है।
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]# उपयोगकर्ता का अभिवादन# ...नेस्टेड कमांड (उप-कमांड)
जटिल उपयोगिताएँ बनाने के लिए (जैसे