প্রকল্প সম্পর্কে
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.