Clikt: Kotlin के लिए शक्तिशाली CLI फ्रेमवर्क जिसमें घोषणात्मक सिंटैक्स है

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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

अनुशंसाएँ