C# CLI टूल्स के लिए क्यों बेस्ट है, और Python डेवलपर के लिए यह क्यों ज़रूरी है
\nजब हम कंसोल यूटिलिटी बनाने की बात करते हैं, तो सबसे पहले Python, Bash या Go का ख्याल आता है। लेकिन क्या हो अगर मैं कहूं कि C# तेज़, क्रॉस-प्लेटफॉर्म और शानदार CLI टूल्स बनाने के लिए सबसे कम आंके जाने वाली भाषाओं में से एक है? हाँ, वही C# जिसे ज़्यादातर लोग वेब फॉर्म और कॉर्पोरेट एप्लीकेशन से जोड़ते हैं।
\n.NET 6/8 के आने के बाद, C# में मिनिमल API, नेटिव कंपाइलेशन (AOT) और बेहद आसान System.CommandLine लाइब्रेरी आ गई है। अब Windows, Linux और macOS पर काम करने वाली यूटिलिटी सिर्फ 15 मिनट में बनाई जा सकती है। Python सीखने वाले छात्रों और डेवलपर्स के लिए, यह अपने टूलकिट को बढ़ाने और दूसरी भाषाओं में CLI टूल्स को समझने का शानदार मौका है।
इस लेख में हम सिर्फ "Hello World" नहीं लिखेंगे। हम एक पूरी फाइल-मैनेजमेंट यूटिलिटी बनाएंगे जो आर्गुमेंट पार्स करेगी, रंगीन टेक्स्ट दिखाएगी, एरर हैंडल करेगी और प्रोग्रेस बार भी दिखाएगी। चलिए शुरू करते हैं!
\n\nप्रोजेक्ट सेटअप: कम से कम मेहनत
\nसबसे पहले, सुनिश्चित करें कि आपके पास .NET SDK (वर्जन 6.0 या उससे ऊपर) इंस्टॉल है। चेक करना आसान है:
\ndotnet --version\nअगर सब ठीक है, तो नया कंसोल प्रोजेक्ट बनाएं:
\ndotnet new console -n FileGuardian\ncd FileGuardian\nइस स्टेप पर हमें एक तैयार स्केलेटन मिल जाता है। लेकिन एक असली CLI यूटिलिटी के लिए हमें आर्गुमेंट पार्स करने वाली लाइब्रेरी चाहिए। इसे जोड़ें:
\ndotnet add package System.CommandLine --version 2.0.0-beta4.22272.1\nहो गया। अब हमारे पास C# कंसोल एप्लीकेशन बनाने के लिए सब कुछ है।
\n\nSystem.CommandLine क्यों, मैन्युअल पार्सिंग क्यों नहीं?
\nकई नौसिखिए args[0], args[1] लिखते हैं और IndexOutOfRangeException पकड़ते हैं। यह दर्द का रास्ता है। System.CommandLine देता है:
- \n
- फ्लैग्स का ऑटोमैटिक पार्सिंग (
--output,-o) \n - गलत इनपुट पर सुझाव \n
- बिल्ट-इन
--helpजनरेशन \n - सब-कमांड का सपोर्ट (जैसे git में) \n
यह किसी भी गंभीर C# कंसोल यूटिलिटी के लिए ज़रूरी है।
\n\nयूटिलिटी का कोर लिखें: पहला कमांड
\nमान लीजिए हम एक फाइल मॉनिटरिंग टूल बना रहे हैं — FileGuardian। यह फाइलों का साइज़ चेक करेगा और अगर वे लिमिट से ज़्यादा हों तो चेतावनी देगा। उपयोगी लगता है, है ना?
\nProgram.cs खोलें और यह कोड लिखें:
using System.CommandLine;\n\nvar rootCommand = new RootCommand("FileGuardian — फाइल मॉनिटरिंग यूटिलिटी");\n\nvar fileOption = new Option<FileInfo?>(\n name: "--file",\n description: "विश्लेषण के लिए फाइल का पथ"\n);\nrootCommand.AddOption(fileOption);\n\nrootCommand.SetHandler((file) =>\n{\n if (file is null || !file.Exists)\n {\n Console.Error.WriteLine("❌ फाइल नहीं मिली!");\n return;\n }\n \n long sizeInBytes = file.Length;\n double sizeInMb = sizeInBytes / (1024.0 * 1024.0);\n \n Console.WriteLine($"📄 फाइल: {file.Name}");\n Console.WriteLine($"📏 साइज़: {sizeInMb:F2} MB");\n \n if (sizeInMb > 100)\n Console.WriteLine("⚠️ चेतावनी: फाइल 100 MB से ज़्यादा है!");\n}, fileOption);\n\nawait rootCommand.InvokeAsync(args);\nरन करें:
\ndotnet run -- --file somefile.txt\nयह पहले से काम कर रहा है। लेकिन यह सिर्फ शुरुआत है। चलिए इसमें रंग और प्रोग्रेस बार जोड़ते हैं।
\n\nआकर्षक आउटपुट: रंग और इमोजी जोड़ें
\nकंसोल को काला-सफेद ही रहना ज़रूरी नहीं है। C# में टेक्स्ट का रंग बदलना आसान है। एक हेल्पर क्लास बनाएं:
\npublic static class ConsoleHelper\n{\n public static void WriteSuccess(string message)\n {\n Console.ForegroundColor = ConsoleColor.Green;\n Console.WriteLine($"✅ {message}"