منصوبے کے بارے میں
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()` — اگر فائل غائب ہو تو ایک خرابی لوٹاتا ہے، جو CLIs کے لیے موزوں ہے جنہیں پہلے سے سیٹ اپ کی ضرورت ہوتی ہے۔
- `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.