86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
# zig-dotenv
|
|
|
|
A simple and lightweight library for loading `.env` files in Zig projects.
|
|
|
|
- **Zero dependencies** — only the Zig standard library
|
|
- **Safe** — proper error handling and automatic memory cleanup
|
|
- **Convenient** — `get`, `getOr`, and `require` methods for easy access
|
|
- **Well-tested** — full unit test coverage
|
|
|
|
## Installation
|
|
|
|
Add the package to your project with `zig fetch`:
|
|
|
|
```bash
|
|
zig fetch --save https://git.lucasf.xyz/public/zig-dotenv/archive/0.1.0.tar.gz
|
|
```
|
|
|
|
Then, in your `build.zig`:
|
|
|
|
```zig
|
|
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
...
|
|
const exe = b.addExecutable(.{ ... });
|
|
...
|
|
|
|
const dotenv_dep = b.dependency("zigdotenv", .{});
|
|
exe.root_module.addImport("zigdotenv", dotenv_dep.module("zigdotenv"));
|
|
}
|
|
```
|
|
## Basic Usage
|
|
|
|
```zig
|
|
const std = @import("std");
|
|
const dotenv = @import("zigdotenv");
|
|
|
|
pub fn main() !void {
|
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
|
defer _ = gpa.deinit();
|
|
const allocator = gpa.allocator();
|
|
|
|
// Load the .env file (fails on unexpected errors)
|
|
var env = try dotenv.DotEnv.load(allocator, ".env");
|
|
defer env.deinit();
|
|
|
|
// Simple access
|
|
if (env.get("API_KEY")) |key| {
|
|
std.debug.print("API_KEY = {s}\n", .{key});
|
|
}
|
|
|
|
// With fallback default
|
|
const debug = env.getOr("DEBUG", "false");
|
|
std.debug.print("DEBUG = {s}\n", .{debug});
|
|
|
|
// Required variable (fails if missing)
|
|
const database_url = try env.require("DATABASE_URL");
|
|
std.debug.print("DB URL = {s}\n", .{database_url});
|
|
}
|
|
```
|
|
## Supported format
|
|
|
|
The parser supports the standard `.env` format:
|
|
|
|
```env
|
|
# Comments are ignored
|
|
API_KEY=supersecret123
|
|
DATABASE_URL=postgres://localhost:5432/myapp
|
|
|
|
# Spaces are trimmed
|
|
DEBUG = true
|
|
|
|
# Single or double quotes are stripped
|
|
QUOTED="value with spaces"
|
|
SINGLE='another value'
|
|
|
|
# Empty value
|
|
EMPTY=
|
|
```
|
|
|
|
## License
|
|
|
|
MIT © Lucas F.
|
|
|
|
___
|
|
Feito com ❤️ em Zig. Enjoy! 🚀
|