authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-05-06 03:00:14 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-05-06 03:00:14 -07:00
log2255bb8f0e6e6b65c5262da534fde0c2c638ff39
tree04fe1e9f92f7a53b49dabba4ccb9c22e7d839585
parenta8ceb38ba59c3111f3162bb14c860ff61dcb9f94
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

uppercase multis env search


1 files changed, 11 insertions(+), 9 deletions(-)

src/lib.zig+11-9
......@@ -80,8 +80,6 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator {
8080}
8181
8282pub fn parseEnv() !void {
83 const alloc = singles.allocator;
84
8583 for (singles.keys(), singles.values()) |k, *v| {
8684 var buf: [64]u8 = @splat(0);
8785 for (k, 0..) |c, i| buf[i] = switch (c) {
......@@ -97,13 +95,17 @@ pub fn parseEnv() !void {
9795 for (multis.keys(), multis.values()) |k, *v| {
9896 var n: usize = 1;
9997 while (true) : (n += 1) {
100 const w = try std.fmt.allocPrintZ(alloc, "{s}_{d}", .{ k, n });
101 defer alloc.free(w);
102 if (sys.getenv(w)) |value| {
103 try v.append(value);
104 continue;
105 }
106 break;
98 var buf: [64]u8 = @splat(0);
99 for (k, 0..) |c, i| buf[i] = switch (c) {
100 'A'...'Z', '_', '0'...'9' => |a| a,
101 'a'...'z' => |a| a - 'a' + 'A',
102 '-' => '_',
103 else => unreachable,
104 };
105 const buf2 = try std.fmt.bufPrint(buf[k.len..], "_{d}", .{n});
106 const w = buf[0 .. k.len + buf2.len :0];
107 const value = sys.getenv(w) orelse break;
108 try v.append(value);
107109 }
108110 }
109111}