इस प्रोजेक्ट के बारे में
dotcfg एक Rust क्रेट है जो लचीले, डेवलपर-नियंत्रित एप्लिकेशन कॉन्फ़िगरेशन प्रबंधन के लिए है। उन क्रेट्स के विपरीत जो एक निश्चित निर्देशिका रणनीति लागू करते हैं या केवल पढ़ने का समर्थन करते हैं, dotcfg आपको चुनने देता है कि कॉन्फ़िग कहाँ रहते हैं और कौन से प्रारूप शामिल करने हैं, फीचर-गेटेड प्रारूप समर्थन के साथ बाइनरी को छोटा रखता है।
### स्टोरेज स्थान
डिफ़ॉल्ट रूप से कॉन्फ़िग `~/.toolname/config.toml` में संग्रहीत होते हैं, जैसे `.cargo` या `.ssh`। उपयोगकर्ता `.xdg()` के माध्यम से XDG-मानक पथों का विकल्प चुन सकते हैं, `.at_dir()` के साथ एक मनमाना पूर्ण पथ पर स्टोर कर सकते हैं, या dotcfg को वर्तमान कार्यशील निर्देशिका से ऊपर चलकर प्रोजेक्ट-स्थानीय कॉन्फ़िग खोजने दे सकते हैं (जैसे Git `.git` कैसे ढूंढता है)।
### प्रारूप समर्थन
TOML डिफ़ॉल्ट रूप से सक्षम है। JSON और YAML वैकल्पिक सुविधाओं (`json`, `yaml`) के रूप में उपलब्ध हैं, और दोनों को जोड़ा जा सकता है ताकि एक बाइनरी कई प्रारूप पढ़ सके। एक कस्टम फ़ाइल नाम भी सेट किया जा सकता है (जैसे `settings.json`)।
### लोडिंग रणनीतियाँ
- `load()` — फ़ाइल मौजूद नहीं होने पर `None` लौटाता है, जिससे एप्लिकेशन को आगे बढ़ने का निर्णय लेने दिया जाता है।
- `load_or_error()` — फ़ाइल गायब होने पर त्रुटि लौटाता है, जो उन CLI के लिए उपयुक्त है जिन्हें पूर्व सेटअप की आवश्यकता होती है।
- `load_or_default()` — पहले उपयोग पर `Default` मानों से भरी फ़ाइल बनाता है।
### प्रति-कुंजी एक्सेस
पूर्ण कॉन्फ़िगरेशन लोड या अधिलेखित किए बिना व्यक्तिगत कुंजियाँ पढ़ें और लिखें:
- `cfg.get("user.name")` / `cfg.set("user.name", "jane")`
- `cfg.get_as::<u16>("port")` / `cfg.set_val("port", 8080u16)`
डॉट नोटेशन (जैसे `section.field`) का उपयोग करके नेस्टेड कुंजियाँ समर्थित हैं और स्वाभाविक रूप से TOML टेबल, JSON ऑब्जेक्ट और YAML मैपिंग में मैप होती हैं। लिखने पर गायब फ़ाइलें या निर्देशिकाएँ बनाई जाती हैं।
### पर्यावरण चर ओवरराइड
उपसर्ग-आधारित env ओवरराइड `MYAPP_PORT=9000` को डिस्क स्थिति को संशोधित किए बिना फ़ाइल मान पर प्राथमिकता लेने देते हैं। `get` कच्चा स्ट्रिंग लौटाता है, जबकि `get_as` बूलियन, संख्याएँ और अल्पविराम-पृथक `Vec` मान पार्स करता है। लेखन संचालन अभी भी केवल कॉन्फ़िग फ़ाइल को लक्षित करते हैं।
### CLI एकीकरण
लाइब्रेरी `clap` के साथ मानक प्राथमिकता श्रृंखला लागू करने के लिए काम करती है: CLI फ़्लैग > कॉन्फ़िग फ़ाइल > डिफ़ॉल्ट फ़ॉलबैक।
### अन्य उपयोगिताएँ
`exists()`, `dir()`, `file_path()`, `delete_file()` और `delete_dir()` प्रोग्रामेटिक निरीक्षण और सफाई के लिए उपलब्ध हैं।
### लाइसेंस
MIT OR Apache-2.0 के तहत दोहरी-लाइसेंस प्राप्त।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.