"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > सीएलआई का विकास करना

सीएलआई का विकास करना

2024-08-27 को प्रकाशित
ब्राउज़ करें:606

Developing CLIs

बिल्डिंग सीएलआई सुविधाएं अक्सर कम हो जाती हैं:

  • नया एपीआई एंडपॉइंट जारी करें।
  • नई सीएलआई कार्रवाइयां बनाएं जिनमें एपीआई परिवर्तन की आवश्यकता है।
  • यह एहसास हुआ कि आपके द्वारा अभी जारी एपीआई में गलतियाँ की गई थीं।
  • भविष्य में और अधिक समस्याएं पैदा किए बिना इस सुविधा के लिए एपीआई को ठीक करने का प्रयास करें।
  • यह याद रखने की कोशिश करें कि आप सीएलआई में क्या हासिल करने की कोशिश कर रहे थे और फिर वास्तव में इसे हासिल करें।  
  • GOTO: एहसास हुआ कि गलतियाँ हुई थीं।

प्रत्येक चरण के लिए पहले वाले की आवश्यकता होती है और उफ़, हमने झरना परियोजना प्रबंधन को फिर से आविष्कार किया है। जब तक आप कार्यशील नहीं हो जाते, तब तक गलतियों को खूबसूरती से दूर करने की कोशिश में आप दर्द से थक जाते हैं, लेकिन असाधारण के सामने अच्छी तरह झुक जाते हैं। और मुझे तदर्थ "सुधारों" और मस्सों के परिणामी समूह को बनाए रखने की शुरुआत न करें।

वहाँ किया गया था कि। हम जानते थे कि हमें झरना-ईश दृष्टिकोण से आगे बढ़ने की जरूरत है।

यहां कहानी है कि हम वहां कैसे पहुंचे और रास्ते में कुछ उपकरणों से मदद मिली।

एक संक्षिप्त शुरुआत की ओर

हम सुविधा को समझने तक सस्ता, तेज पुनरावृत्ति चाहते थे, और उसके बाद ही महंगे कार्यान्वयन और दीर्घकालिक समर्थन के लिए प्रतिबद्ध थे। एक छोटी टीम के रूप में, मैं अक्सर इस प्रक्रिया को शुरू से अंत तक कर रहा था, और प्रत्येक भाग पर बारी-बारी से ध्यान केंद्रित करना चाहता था। हम कार्यान्वयन भागों को तब तक नकली बनाना चाहते थे जब तक हम इसे बनाने के लिए पर्याप्त आश्वस्त नहीं हो गए।

प्रक्रिया पर वापस आते हुए, यह सुविधाओं के प्रस्ताव के साथ शुरू होती है। हम अमूर्त से बाहर निकलना चाहते थे, लेकिन तब नहीं जब इसका मतलब आधा-अधूरा कार्यान्वयन हो। हमने इसे Google डॉक्स सीएलआई स्केच दृष्टिकोण से प्रेरित होकर "स्केच" के साथ बनाया, जिसका वर्णन जीथब ने यहां किया है।

दुर्भाग्य से, स्थिर रेखाचित्रों ने हमें वह प्रतिक्रिया नहीं दी जो हम चाहते थे। हमारा सीएलआई समय के साथ आउटपुट बदलता है, ड्राइंग की तुलना में एनीमेशन की तरह। उच्च निष्ठा प्राप्त करने के लिए, मैंने बुनियादी इनपुट लेने और उचित डिब्बाबंद प्रतिक्रियाओं को प्रिंट करके प्रतिक्रिया देने के लिए छोटे रूबी प्रोग्राम लिखे।

तब से हमने एनिमेटेड सीएलआई आउटपुट को कैप्चर करने का एक बेहतर तरीका ढूंढ लिया है, लेकिन इसे समझाने के लिए थोड़ा चक्कर लगाने की आवश्यकता है।

क्या आप भी परीक्षण करते हैं?

जैसे ही हमने अपने सीएलआई को विकसित करना शुरू किया, हम किनारे के मामलों का परीक्षण करना और प्रतिगमन का पता लगाना भी चाहते थे। मैंने विचारों की तलाश के लिए सार्वजनिक कोबरा/बबलटी आधारित सीएलआई का सर्वेक्षण किया, और निराशाजनक रूप से कुछ परीक्षण पाए। तभी हमारी नजर चार्म के टीटेस्ट पर पड़ी जिसने हमें एक शुरुआती बिंदु दिया।

टीएस्ट सुनहरे परीक्षणों पर ध्यान केंद्रित करता है, एक ज्ञात अच्छे आउटपुट को कैप्चर करता है और फिर यह दावा करता है कि भविष्य के आउटपुट उससे मेल खाते रहेंगे। जिसने हमें एक बार फिर एनिमेटेड सीएलआई आउटपुट की उच्च निष्ठा कैप्चरिंग की ओर वापस ला दिया। टीटेस्ट ने हमें फ़्लिपबुक जैसे फ़्रेम-आधारित समाधान का बेहतरीन विचार दिया, जिसे हमने बनाया है:

─── SigninHeader ───────────────────────────────────────────────────────────────
# Signin To Your CLI Account `cli auth signin`
─── SigninInput --──────────────────────────────────────────────────────────────
# Signin To Your CLI Account `cli auth signin`
    ? What is your username?
    ? user
─── SigninInput ────────────────────────────────────────────────────────────────
# Signin To Your CLI Account `cli auth signin`
    * Signing in to your CLI account… ⠋
─── SigninInput ────────────────────────────────────────────────────────────────
# Signin To Your CLI Account `cli auth signin`
    * Signed in to your CLI account: [email protected]

यह सरलीकृत उदाहरण दिखाता है कि बुनियादी प्राधिकरण कमांड के लिए सुनहरा आउटपुट कैसा दिख सकता है। क्षैतिज रेखाएँ फ़्रेम को चित्रित करती हैं, जिसमें सक्रिय मॉडल को इंगित करने वाले लेबल होते हैं। कुल मिलाकर हमें आउटपुट की उच्च निष्ठा कैप्चरिंग मिलती है, भले ही लाइनें जोड़ी जाती हैं, हटाई जाती हैं, या प्रतिस्थापित की जाती हैं।

गोल्डन आउटपुट के साथ फ़ाइलों को अपडेट करने के लिए हम अपने परीक्षण सूट में एक ध्वज का उपयोग करते हैं, और अन्यथा यदि आउटपुट फ़ाइलों से मेल नहीं खाता है तो परीक्षण विफल हो जाते हैं। यह हमें आउटपुट परिवर्तनों के बारे में जागरूक रखता है और पीआर समीक्षाओं की सुविधा प्रदान करता है, जिससे हमें यह समझने में मदद मिलती है कि आउटपुट कैसा दिखना चाहिए और क्या यह बदल गया है। हमें यह इतना पसंद है कि हम अपने स्केच प्रोग्राम को जीथब स्टाइल गूगल डॉक्स में गोल्डन स्टाइल आउटपुट के साथ बदलने की योजना बना रहे हैं ताकि हम एनीमेशन और स्टाइल दोनों विचारों को कैप्चर कर सकें।

हाथ में हमारे एक बार और भविष्य के स्केच के साथ, आइए नए एपीआई एंडपॉइंट के साथ शुरुआत करने के लिए वापस आएं।

एपीआई और सीएलआई को एक साथ डिजाइन करना

हम एपीआई और सीएलआई पर एक साथ काम करते हैं, क्योंकि इनके लिए सर्वोत्तम डिज़ाइन कड़े एकीकरण से विकसित होते हैं। हम ऐसा करने में सक्षम हैं, जबकि अभी भी जलप्रपात के खतरों से बचते हुए, सस्ते संदर्भों में डिजाइनों को दोहराते हुए और आवश्यकताओं के ठोस होने तक कार्यान्वयन की प्रतीक्षा करते हुए। हमारे एपीआई के लिए, इसका मतलब ओपनएपीआई के साथ स्केचिंग है:

openapi: 3.1.0
info:
  contact:
    email: [email protected]
  description: An example API.
  title: Example API
  version: 0.0.1
servers:
  - url: https://api.example.com
tags:
  - description: account operations
    name: account
paths:
  '/v0/auth/signin':
    post:
      description: Signin to CLI.
      operationId: auth_signin
      responses:
        '200':
          content:
            'application/json':
              schema:
                additionalProperties: false
                properties:
                  email:
                    description: Email address for authenticated user.
                    example: [email protected]
                    type: string
                required:
                  - email
                type: object
          description: Successful signin.
      summary: Signin to CLI.
      tags:
        - account

यह सरलीकृत उदाहरण दिखाता है कि बुनियादी प्राधिकरण आदेश के लिए स्कीमा कैसा दिख सकता है। हम इन फ़ाइलों पर काम को सरल बनाने के लिए स्पेक्ट्रल लिंटर का उपयोग करते हैं।

हाथ में एक स्केच के साथ, हम सीएलआई को लागू करते समय प्रिज्म को एक नकली एपीआई सर्वर के रूप में उपयोग करते हैं। जब हमें अनिवार्य रूप से एहसास होता है कि गलतियाँ हुई हैं, तो हम केवल विशिष्टता में बदलाव कर सकते हैं और अपने सीएलआई पुनरावृत्ति पर वापस आ सकते हैं। इस उच्च स्तर पर काम करने से हमें एपीआई और सीएलआई को एक साथ विकसित करने और बेहतर ज्ञान होने तक महंगे कार्यान्वयन को स्थगित करने की अनुमति मिलती है।

एपीआई लागू करना

समिति का उपयोग करते हुए कार्यान्वयन के दौरान हमें ईमानदार रखने के लिए हम अपने ओपनएपीआई विनिर्देश पर भी निर्भर रहते हैं। assert_schema_conform संरेखण का परीक्षण करता है और मिडलवेयर हमें किसी भी लाइव विसंगतियों के बारे में सूचित करता है। ये हमें प्रतिगमन से बचाते हुए लाल हरे कार्यान्वयन की अनुमति देते हैं।

मोक्स और प्रॉक्सी के साथ परीक्षण

चीजों को पूरा करने के लिए, हमारा परीक्षण सूट प्रिज्म को नकली या प्रॉक्सी मोड में चलाने के लिए झंडे का उपयोग करता है। झंडे का उपयोग करके हम केवल एक प्रकार के परीक्षण लिखने पर ध्यान केंद्रित कर सकते हैं, हालांकि इसका मतलब यह है कि हम कुछ परीक्षणों को एक या दूसरे मोड में छोड़ देते हैं। हम विंडोज़ और मैकओएस पर उनकी गति के लिए मॉक टेस्ट का उपयोग करते हैं जहां हमारा पूरा स्टैक सीआई में नहीं चलता है। हमारे प्रॉक्सी परीक्षण हमें केवल एक ध्वज जोड़कर हमारे पूरे स्टैक के विरुद्ध परीक्षण चलाने देते हैं, जिससे जब भी हम आवश्यक समझें तो शुरू से अंत तक परीक्षण चलाना आसान हो जाता है।

यह सब एक साथ खींचना

स्केच और विवरण हमें कार्यान्वयन में उलझे बिना सार से आगे बढ़ने में मदद करते हैं। फिर मॉक और प्रॉक्सी हमें यह सुनिश्चित करने में मदद करते हैं कि कार्यान्वयन रेखाचित्रों से मेल खाते हों। हमारी प्रक्रिया को दोहराते रहने से, प्रत्येक सुविधा कम दर्द का कारण बनती है, जिसे हमने इस महीने के अंत में प्रदान की जाने वाली टीमों के अनुभव के निर्माण के दौरान गहराई से सराहना की है।

हम अपनी प्रक्रिया को दोहराते रहेंगे, मुझे आशा है कि आपने इससे कुछ सीखा है और मुझे आपसे सीखना अच्छा लगेगा। आपने क्या प्रयास किया है, आप कहाँ गौरवान्वित हैं और क्या निराशा बनी हुई है?

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/anchordotdev/developing-clis-o14?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3