From 1948b07892e0dcc4bf5351dbfe712004285ea623 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 12 Sep 2021 17:03:44 -0700 Subject: [PATCH] add parseEnv --- src/lib.zig | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/lib.zig b/src/lib.zig index cf0325cbc2f1d31fdb91bc7af155a699c5fb4268..a3e04c05c0d2b041ebbad5fd39c3747488c36ac5 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -62,6 +62,33 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator { return argiter; } +pub fn parseEnv() !void { + const alloc = singles.allocator; + + for (singles.keys()) |jtem| { + const u = try extras.asciiUpper(alloc, jtem); + defer alloc.free(u); + if (std.os.getenv(u)) |value| { + try singles.put(jtem, value); + } + } + for (multis.keys()) |jtem| { + const e = multis.getEntry(jtem).?; + var n: usize = 1; + while (true) : (n += 1) { + const u = try extras.asciiUpper(alloc, e.key_ptr.*); + defer alloc.free(u); + const k = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n }); + defer alloc.free(k); + if (std.os.getenv(k)) |value| { + try e.value_ptr.append(value); + continue; + } + break; + } + } +} + pub fn getSingle(name: string) ?string { const x = singles.get(name).?; return if (x.len > 0) x else null; -- 2.54.0