authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-09-12 17:03:44 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-09-12 17:03:44 -07:00
log1948b07892e0dcc4bf5351dbfe712004285ea623
treeb9d195434d90db2da9c1c4bc99d1d0636760f03b
parentccc59ded6dddb711b68fb7c022530b8f98d9b7ba

add parseEnv


1 files changed, 27 insertions(+), 0 deletions(-)

src/lib.zig+27
...@@ -62,6 +62,33 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator {...@@ -62,6 +62,33 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator {
62 return argiter;62 return argiter;
63}63}
6464
65pub fn parseEnv() !void {
66 const alloc = singles.allocator;
67
68 for (singles.keys()) |jtem| {
69 const u = try extras.asciiUpper(alloc, jtem);
70 defer alloc.free(u);
71 if (std.os.getenv(u)) |value| {
72 try singles.put(jtem, value);
73 }
74 }
75 for (multis.keys()) |jtem| {
76 const e = multis.getEntry(jtem).?;
77 var n: usize = 1;
78 while (true) : (n += 1) {
79 const u = try extras.asciiUpper(alloc, e.key_ptr.*);
80 defer alloc.free(u);
81 const k = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n });
82 defer alloc.free(k);
83 if (std.os.getenv(k)) |value| {
84 try e.value_ptr.append(value);
85 continue;
86 }
87 break;
88 }
89 }
90}
91
65pub fn getSingle(name: string) ?string {92pub fn getSingle(name: string) ?string {
66 const x = singles.get(name).?;93 const x = singles.get(name).?;
67 return if (x.len > 0) x else null;94 return if (x.len > 0) x else null;