Kotlin CLI-उपयोगिताओं के लिए आदर्श भाषा क्यों है?
\n\nजब कंसोल टूल बनाने की बात आती है, तो कई डेवलपर आदतन Python या Bash की ओर बढ़ते हैं। लेकिन अगर आप पहले से Kotlin से परिचित हैं (और हमारी साइट pythonlib.ru पर हम मानते हैं कि एक अच्छा डेवलपर कई भाषाएँ जानता है), तो आप जानते हैं कि यह भाषा कितनी संक्षिप्त और अभिव्यंजक है। Kotlin में CLI उपयोगिताएँ बनाना सिर्फ फैशन का पालन नहीं है, बल्कि तेज़, टाइप-सुरक्षित और क्रॉस-प्लेटफ़ॉर्म टूल प्राप्त करने का एक वास्तविक तरीका है।
\n\nकल्पना करें: आप Kotlin में एक कंसोल एप्लिकेशन लिखते हैं जो GraalVM या Kotlin/Native के माध्यम से JAR या नेटिव बाइनरी में कंपाइल होता है। यह हर जगह चलता है - Linux सर्वर से लेकर आपके सहकर्मी की Windows मशीन तक। साथ ही, कोड Java की तुलना में 2-3 गुना छोटा और Python की तुलना में अधिक सुरक्षित होता है। आकर्षक लगता है? आइए समझते हैं।
\n\nशुरुआत के लिए क्या चाहिए?
\n\nKotlin CLI बनाने के लिए आपको न्यूनतम चाहिए:
\n- \n
- JDK 11+ इंस्टॉल (मैं 17 या 21 सुझाता हूँ) \n
- IntelliJ IDEA (Community संस्करण पर्याप्त है) या कोई भी टेक्स्ट एडिटर \n
- Kotlin का बुनियादी ज्ञान (फंक्शन, क्लास, कलेक्शन) \n
- बिल्ड के लिए Gradle या Maven \n
अगर आपने अभी तक कंसोल में Kotlin के साथ काम नहीं किया है - कोई बात नहीं। हम खाली फ़ाइल से लेकर एक पूर्ण उपयोगिता तक का सफर तय करेंगे, जिसे प्रकाशित किया जा सकता है और CI/CD पाइपलाइनों में उपयोग किया जा सकता है।
\n\nचरण 1: CLI उपयोगिता के लिए प्रोजेक्ट सेटअप
\n\nहम एक सरल Gradle प्रोजेक्ट बनाएँगे। यहाँ न्यूनतम build.gradle.kts है:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.pythonlib.cli.MainKt")\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n implementation("com.github.ajalt.clikt:clikt:4.2.2")\n implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")\n}\n\nदो प्रमुख लाइब्रेरीज़ पर ध्यान दें: Clikt और Kotlinx CLI। पहली Kotlin में CLI उपयोगिताएँ बनाने के लिए सबसे लोकप्रिय लाइब्रेरी है। दूसरी JetBrains का आधिकारिक समाधान है। इस लेख में हम Clikt का उपयोग करेंगे, क्योंकि यह अधिक लचीलापन देता है और बेहतर दिखता है।
\n\nचरण 2: पहला कमांड लिखना
\n\nफ़ाइल src/main/kotlin/com/pythonlib/cli/Main.kt बनाएँ:
package com.pythonlib.cli\n\nimport com.github.ajalt.clikt.core.CliktCommand\nimport com.github.ajalt.clikt.parameters.arguments.argument\nimport com.github.ajalt.clikt.parameters.options.option\nimport com.github.ajalt.clikt.parameters.options.flag\n\nclass GreetCommand : CliktCommand(\n name = "greet",\n help = "उपयोगकर्ता का स्वागत करता है"\n) {\n private val name: String by argument(\n help = "उपयोगकर्ता का नाम"\n )\n\n private val uppercase: Boolean by option(\n "--uppercase", "-u",\n help = "नाम को अपरकेस में प्रदर्शित करें"\n ).flag()\n\n override fun run() {\n val greeting = "नमस्ते, $name!"\n if (uppercase) {\n echo(greeting.uppercase())\n } else {\n echo(greeting)\n }\n }\n}\n\nfun main(args: Array<String>) {\n GreetCommand().main(args)\n}\n\nयह एक सरल Kotlin CLI उपयोगिता है जो एक नाम और एक वैकल्पिक फ्लैग लेती है। चलाएँ:
\n\n./gradlew run --args="अलेक्से --uppercase"\n# आउटपुट: नमस्ते, अलेक्से!\n\nकेवल 30 लाइनों का कोड - और हमारे पास एक काम करने वाला कंसोल टूल है। Clikt स्वयं हेल्प जनरेट करता है, त्रुटियों को संभालता है और bash/zsh के लिए ऑटो-कम्प्लीशन सपोर्ट करता है।
\n\nचरण 3: मल्टी-लेवल कमांड (Git की तरह)
\n\nअसली Kotlin में कंसोल एप्लिकेशन शायद ही कभी एक ही कमांड से बने होते हैं। आइए फ़ाइलों के साथ काम करने के लिए एक उपयोगिता बनाएँ जो सबकमांड सपोर्ट करती है:
\n\nimport com.github.ajalt.clikt.core.subcommands\n\nclass FileTool : CliktCommand(\n name