1.9 KiB
1.9 KiB
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, andrequiremethods for easy access - Well-tested — full unit test coverage
Installation
Add the package to your project with zig fetch:
zig fetch --save https://git.lucasf.xyz/public/zig-dotenv/archive/0.1.0.tar.gz
Then, in your build.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
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:
# 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! 🚀