Swift (iOS/macOS) के लिए CLI फ्रेमवर्क: ArgumentParser
\n\nApple इकोसिस्टम के लिए डेवलपमेंट की दुनिया में, अक्सर न केवल ग्राफिकल एप्लिकेशन बल्कि शक्तिशाली कंसोल उपयोगिताएँ बनाने की आवश्यकता होती है। चाहे वह बिल्ड ऑटोमेशन हो, डेटा प्रोसेसिंग हो, या iOS/macOS के लिए सहायक टूल बनाना हो — एक गुणवत्तापूर्ण CLI (कमांड लाइन इंटरफ़ेस) के बिना काम नहीं चल सकता। इन उद्देश्यों के लिए, Apple आधिकारिक फ्रेमवर्क ArgumentParser प्रदान करता है, जो Swift Package Manager का हिस्सा है। यह एक आधुनिक, टाइप-सेफ और घोषणात्मक टूल है जो न्यूनतम प्रयास के साथ Swift में कंसोल एप्लिकेशन बनाने की अनुमति देता है।
\n\nCommandLine.arguments के माध्यम से सरल आर्गुमेंट पार्सिंग के विपरीत, ArgumentParser एक संरचित दृष्टिकोण प्रदान करता है: आप अपनी संरचनाओं के गुणों के रूप में कमांड, फ्लैग और विकल्पों का वर्णन करते हैं, और फ्रेमवर्क स्वचालित रूप से सहायता उत्पन्न करता है, त्रुटियों को संभालता है और इनपुट को मान्य करता है। आइए जानें कि macOS और iOS (Swift Package Manager के माध्यम से) के लिए इस फ्रेमवर्क का उपयोग कैसे करें।
स्थापना और कनेक्शन
\n\nArgumentParser को अलग से स्थापित करने की आवश्यकता नहीं है — यह Swift मानक लाइब्रेरी (Swift 5.5 से शुरू) के भाग के रूप में उपलब्ध है। अपने प्रोजेक्ट में उपयोग करने के लिए, Package.swift में निर्भरता जोड़ें:
// swift-tools-version:5.7\nimport PackageDescription\n\nlet package = Package(\n name: "MyCLI",\n dependencies: [\n .package(url: "https://github.com/apple/swift-argument-parser", 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\niOS प्रोजेक्ट्स के लिए, Xcode में Swift Package Manager के माध्यम से फ्रेमवर्क जोड़ा जा सकता है, उसी रिपॉजिटरी को निर्दिष्ट करके। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि CLI एप्लिकेशन आमतौर पर macOS के लिए बनाए जाते हैं, लेकिन लाइब्रेरी का उपयोग iOS एप्लिकेशन में आंतरिक स्ट्रिंग पार्सिंग के लिए भी किया जा सकता है।
\n\nमुख्य अवधारणाएँ
\n\nArgumentParser तीन प्रमुख संस्थाओं के आसपास बनाया गया है:
\n\n- \n
- कमांड (
ParsableCommand) — मुख्य तत्व, जो एक CLI कमांड का प्रतिनिधित्व करता है। प्रत्येक कमांड एक संरचना है जोParsableCommandप्रोटोकॉल को लागू करती है। \n - आर्गुमेंट (
@Argument) — स्थितीय पैरामीटर, इनपुट के लिए अनिवार्य। \n - विकल्प (
@Option) — लंबे (--name) और छोटे (-n) फ्लैग के साथ नामित पैरामीटर। \n - फ्लैग (
@Flag) — बूलियन स्विच (--verbose, --quiet)। \n
उदाहरण: एक सरल CLI कैलकुलेटर बनाना
\n\nmacOS के लिए एक कंसोल एप्लिकेशन बनाएं जो बुनियादी अंकगणितीय संचालन करता है:
\n\nimport ArgumentParser\n\nstruct Calculator: ParsableCommand {\n static let configuration = CommandConfiguration(\n commandName: "calc",\n abstract: "कमांड लाइन के लिए सरल कैलकुलेटर",\n discussion: "जोड़, घटाव, गुणा और भाग का समर्थन करता है।"\n )\n\n @Argument(help: "पहली संख्या")\n var firstNumber: Double\n\n @Argument(help: "दूसरी संख्या")\n var secondNumber: Double\n\n @Option(name: [.short, .long], help: "संक्रिया: add, sub, mul, div")\n var operation: String = "add"\n\n @Flag(name: [.short, .long], help: "विस्तृत आउटपुट")\n var verbose: Bool = false\n\n mutating func run() throws {\n let result: Double\n switch operation {\n case "add":\n result = firstNumber + secondNumber\n case "sub":\n result = firstNumber - secondNumber\n case "mul":\n result = firstNumber * secondNumber\n case "div":\n guard secondNumber != 0 else {\n throw ValidationError("शून्य से भाग!") \n }\n result = firstNumber / s पुस्तकालय में भी
Rust में अंतर्राष्ट्रीयकरण (i18n): gettext-rs और fluent-rs लाइब्रेरी
Java में CSV के साथ कार्य: OpenCSV और Apache Commons CSV लाइब्रेरीज़
TypeScript पर मशीन लर्निंग: 2024 में ML के लिए लाइब्रेरियों का अवलोकन
TypeScript के लिए Swagger/OpenAPI जनरेशन: सर्वश्रेष्ठ टूल्स