Clikt: Kotlin के लिए शक्तिशाली CLI फ्रेमवर्क
Clikt Kotlin भाषा में कंसोल (CLI) एप्लिकेशन बनाने के लिए एक आधुनिक, हल्का-फुल्का फ्रेमवर्क है। कई अन्य लाइब्रेरीज़ के विपरीत, Clikt एक घोषणात्मक दृष्टिकोण का उपयोग करता है, जो आपको सरल एनोटेशन और लैम्ब्डा एक्सप्रेशन के माध्यम से कमांड की संरचना और उनके पैरामीटर का वर्णन करने की अनुमति देता है। यह कोड को साफ, पढ़ने योग्य और आसानी से बनाए रखने योग्य बनाता है। यह लाइब्रेरी छोटी उपयोगिताओं और जटिल बहु-स्तरीय कमांड लाइन इंटरफेस दोनों के लिए आदर्श है।
Clikt की प्रमुख विशेषताएं
- घोषणात्मक सिंटैक्स: DSL (डोमेन स्पेसिफिक लैंग्वेज) या एनोटेशन के माध्यम से कमांड, विकल्प और आर्गुमेंट की परिभाषा।
- स्वचालित सहायता निर्माण: Clikt आपकी परिभाषाओं के आधार पर स्वचालित रूप से एक सुंदर और संरचित
--helpसंदेश बनाता है। - नेस्टेड कमांड के लिए समर्थन: सरल उप-कमांड तंत्र के साथ कमांड पदानुक्रम बनाएं (उदाहरण के लिए,
git commit,git push)। - मान सत्यापन: प्रकार, श्रेणियों, प्रारूपों और कस्टम शर्तों की जांच के लिए अंतर्निहित तंत्र।
- ऑटो-कम्प्लीशन: Bash, Zsh और Fish के लिए ऑटो-कम्प्लीशन स्क्रिप्ट जनरेशन के लिए मूल समर्थन।
- परीक्षण क्षमता: टर्मिनल में वास्तविक रूप से चलाए बिना CLI एप्लिकेशन के परीक्षण के लिए सुविधाजनक उपकरण।
स्थापना और कनेक्शन
आरंभ करने के लिए, अपने build.gradle.kts में निर्भरता जोड़ें:
repositories { mavenCentral()}
dependencies { implementation("com.github.ajalt.clikt:clikt:4.4.0")}Maven के लिए उपयोग करें:
<dependency> <groupId>com.github.ajalt.clikt</groupId> <artifactId>clikt</artifactId> <version>4.4.0</version></dependency>मूल उदाहरण: अभिवादन
आइए एक सरल कमांड बनाएं जो उपयोगकर्ता का नाम और विभिन्न भाषाओं में अभिवादन के लिए एक वैकल्पिक फ़्लैग लेता है।
import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.flagimport com.github.ajalt.clikt.parameters.options.option
class Greet : CliktCommand() { val name: String by argument(help = "उपयोगकर्ता का नाम") val formal: Boolean by option("--formal", "-f", help = "औपचारिक अभिवादन").flag()
override fun run() { val greeting = if (formal) "नमस्ते" else "नमस्कार" echo("$greeting, $name!") }}
fun main(args: Array<String>) = Greet().main(args)कमांड लाइन से चलाना:
$ kotlin greet.kts रामनमस्कार, राम!
$ kotlin greet.kts --formal रामनमस्ते, राम!
$ kotlin greet.kts --helpUsage: greet [<options>] <name>
उपयोगकर्ता का नाम
Options: -f, --formal औपचारिक अभिवादन -h, --help Show this message and exitउन्नत उदाहरण: फ़ाइलों और उप-कमांड के साथ कार्य करना
आइए एक अधिक जटिल परिदृश्य पर विचार करें — टेक्स्ट फ़ाइलों के साथ काम करने के लिए एक उपयोगिता जिसमें count और search उप-कमांड का समर्थन है।
import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.core.subcommandsimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.defaultimport com.github.ajalt.clikt.parameters.options.optionimport java.io.File
class FileTool : CliktCommand() { override fun run() = Unit // रूट कमांड कुछ नहीं करता}
class Count : CliktCommand(help = "फ़ाइल में पंक्तियाँ गिनें") { val file: File by argument(help = "फ़ाइल का पथ") .validate { require(it.exists()) { "फ़ाइल नहीं मिली: $it" } }
override f पुस्तकालय में भी
C# (.NET) में भू-स्थान और मानचित्र: पुस्तकालयों और उपकरणों का अवलोकन
TypeScript में डेटा वैलिडेशन: लाइब्रेरीज़, दृष्टिकोण और कोड उदाहरण
PM2 — जावास्क्रिप्ट (Node.js) अनुप्रयोगों की निगरानी
C# (.NET) के लिए ORM: Entity Framework, Dapper और NHibernate की तुलना
Rust अनुप्रयोगों की निगरानी: `tracing` लाइब्रेरी