Bnlang এ পরিবেশ ভেরিয়েবল পড়া

Environment variables হলো key-value জোড়া, যা অপারেটিং সিস্টেম একটি প্রসেসের কাছে উপলব্ধ করায়। কনফিগ (পোর্ট, ডাটাবেস URL, সিক্রেট) কোডে বেক না করে পাঠানোর স্ট্যান্ডার্ড উপায়।

বিল্ট-ইন sys মডিউল এদেরকে এক্সপোজ করে; dotenv লাইব্রেরি লোকাল ডেভেলপমেন্টের জন্য একটি .env ফাইল উপরে লেয়ার করে।


Reading One Variable

sys.env(name) মান একটি স্ট্রিং হিসেবে ফেরত দেয়, ভেরিয়েবল সেট না থাকলে null। একটি ডিফল্টের সাথে পেয়ার করুন।

import "sys" as sys;

var user = sys.env("USER");
if (user == null) { user = "Guest"; }

print("Current user:", user);
USER=Alice bnl env.bnl
# Output: Current user: Alice

Reading Multiple Variables

import "sys" as sys;

var host = sys.env("HOST"); if (host == null) { host = "localhost"; }
var port = sys.env("PORT"); if (port == null) { port = "3000"; }

print("Server will run at http://" + host + ":" + port);
HOST=127.0.0.1 PORT=8080 bnl config.bnl
# Output: Server will run at http://127.0.0.1:8080

Dumping the Whole Environment

import "sys" as sys;

var all = sys.envs();      // map of every env var
for (var k of all.keys()) {
    print(k, "=", all[k]);
}

Local .env Files with the dotenv Library

লোকাল ডেভেলপমেন্টে সাধারণত আপনি শেলে প্রতিটি ভেরিয়েবল এক্সপোর্ট করতে চান না। dotenv লাইব্রেরি একটি .env ফাইলকে একটি ম্যাপে পার্স করে, যেখান থেকে পড়তে পারেন।

# .env
DATABASE_URL=postgres://localhost/myapp
API_KEY=dev-secret
import "dotenv" as dotenv;

var env = dotenv.load_or_empty(".env");
print(env.DATABASE_URL);
print(env.API_KEY);

Best Practices

  • প্রতিটি ভেরিয়েবলের জন্য একটি যুক্তিসঙ্গত ডিফল্ট দিন।
  • .env কে ভার্সন কন্ট্রোল থেকে দূরে রাখুন — পরিবর্তে একটি .env.example টেমপ্লেট কমিট করুন।
  • সিক্রেট লগ করবেন না। API_KEY / *_TOKEN / *_SECRET কে সংবেদনশীল হিসেবে দেখুন।
  • মাল্টি-এনভায়রনমেন্ট অ্যাপের জন্য .env.local কে .env এর উপর লেয়ার করুন, এবং বাস্তব OS environment variables-কে সবার উপরে জিততে দিন।