Kotlin के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाना
Kotlin एक आधुनिक भाषा है जो न केवल Android या सर्वर डेवलपमेंट के लिए, बल्कि कंसोल (CLI) एप्लिकेशन बनाने के लिए भी बहुत उपयुक्त है। आर्गुमेंट पार्सिंग मैन्युअल रूप से न लिखने के लिए, विशेष फ्रेमवर्क मौजूद हैं। इस लेख में हम तीन सबसे लोकप्रिय समाधानों पर चर्चा करेंगे: Clikt, kotlinx-cli और picocli। आप उनकी विशेषताओं को जानेंगे, कोड उदाहरण देखेंगे और अपने प्रोजेक्ट के लिए उपयुक्त टूल चुन सकेंगे।
CLI फ्रेमवर्क की आवश्यकता क्यों है?
कमांड लाइन उपयोगिताएँ बनाना एक ऐसा कार्य है जो जल्दी ही जटिल हो जाता है: फ्लैग, ऑप्शन, पोजीशनल आर्गुमेंट को संभालना, हेल्प आउटपुट देना। मैन्युअल कार्यान्वयन से त्रुटियाँ और कोड डुप्लिकेशन होता है। फ्रेमवर्क तैयार तंत्र प्रदान करते हैं:
- कमांड इंटरफ़ेस का घोषणात्मक विवरण
- स्वचालित हेल्प जनरेशन (--help)
- इनपुट सत्यापन
- उप-कमांड का समर्थन (git शैली)
- टाइप सुरक्षा
1. Clikt — सबसे "Kotlin-शैली" फ्रेमवर्क
Clikt (https://github.com/ajalt/clikt) एक शुद्ध Kotlin लाइब्रेरी है जो DSL और डेलिगेटेड प्रॉपर्टीज़ का उपयोग करती है। यह Java एनोटेशन पर निर्भर नहीं है और एक सहज API प्रदान करता है।
स्थापना
// build.gradle.ktsimplementation("com.github.ajalt.clikt:clikt:4.2.2")उदाहरण: सरल कैलकुलेटर
import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.optionimport com.github.ajalt.clikt.parameters.types.int
class Calc : CliktCommand() { val a: Int by argument() val b: Int by argument() val multiply by option("--mult", "-m", help = "गुणा करें, जोड़ें नहीं").flag()
override fun run() { val result = if (multiply) a * b else a + b echo("परिणाम: $result") }}
fun main(args: Array<String>) = Calc().main(args)चलाएँ: kotlin calc 5 3 --mult → परिणाम: 15.
Clikt के लाभ:
- Kotlin के साथ पूर्ण एकीकरण (DSL, डेलिगेट)
- शक्तिशाली सत्यापन प्रणाली (कस्टम वैलिडेटर)
- किसी भी गहराई के उप-कमांड का समर्थन
- स्वचालित man-पेज जनरेशन
- सक्रिय समुदाय और अपडेट
2. kotlinx-cli — JetBrains का हल्का समाधान
kotlinx-cli एक प्रायोगिक लाइब्रेरी है जो Kotlin इकोसिस्टम का हिस्सा है। यह न्यूनतम है और छोटी उपयोगिताओं के लिए उपयुक्त है।
स्थापना
// build.gradle.ktsimplementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")उदाहरण: अभिवादन
import kotlinx.cli.*
fun main(args: Array<String>) { val parser = ArgParser("greet") val name by parser.option(ArgType.String, shortName = "n", description = "नाम") .default("दुनिया") val times by parser.option(ArgType.Int, shortName = "t", description = "बार की संख्या") .default(1)
parser.parse(args)
repeat(times) { println("नमस्ते, $name!") }}चलाएँ: kotlin greet -n Kotlin -t 2 → नमस्ते, Kotlin! (दो बार)।
kotlinx-cli की विशेषताएँ:
- बहुत सरल API — न्यूनतम कोड
- बुनियादी प्रकारों का समर्थन (String, Int, Boolean)
- जटिल कमांड पदानुक्रम के लिए उपयुक्त नहीं
- प्रायोगिक स्थिति (API बदल सकता है)
- कोई अंतर्निहित सत्यापन या संकेत नहीं
3. picocli — Java जड़ों वाला शक्तिशाली फ्रेमवर्क
picocli एक लोकप्रिय फ्रेमवर्क है जो Java और Kotlin दोनों के साथ काम करता है। यह एनोटेशन का उपयोग करता है, लेकिन इसमें Kotlin DSL के लिए विशेष समर्थन है।
पुस्तकालय में भी
TypeScript में कार्य शेड्यूलर: node-schedule लाइब्रेरी के लिए विस्तृत गाइड
Swift कार्य अनुसूचक: iOS/macOS के लिए GCD, OperationQueue और Combine
Go (Golang) में YAML के साथ कार्य: go-yaml और yaml.v3 लाइब्रेरीज़
Kotlin के लिए Dependency Injection कंटेनर: Koin vs Kodein vs Dagger