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 {...@@ -80,8 +80,6 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator {
80}80}
8181
82pub fn parseEnv() !void {82pub fn parseEnv() !void {
83 const alloc = singles.allocator;
84
85 for (singles.keys(), singles.values()) |k, *v| {83 for (singles.keys(), singles.values()) |k, *v| {
86 var buf: [64]u8 = @splat(0);84 var buf: [64]u8 = @splat(0);
87 for (k, 0..) |c, i| buf[i] = switch (c) {85 for (k, 0..) |c, i| buf[i] = switch (c) {
...@@ -97,13 +95,17 @@ pub fn parseEnv() !void {...@@ -97,13 +95,17 @@ pub fn parseEnv() !void {
97 for (multis.keys(), multis.values()) |k, *v| {95 for (multis.keys(), multis.values()) |k, *v| {
98 var n: usize = 1;96 var n: usize = 1;
99 while (true) : (n += 1) {97 while (true) : (n += 1) {
100 const w = try std.fmt.allocPrintZ(alloc, "{s}_{d}", .{ k, n });98 var buf: [64]u8 = @splat(0);
101 defer alloc.free(w);99 for (k, 0..) |c, i| buf[i] = switch (c) {
102 if (sys.getenv(w)) |value| {100 'A'...'Z', '_', '0'...'9' => |a| a,
103 try v.append(value);101 'a'...'z' => |a| a - 'a' + 'A',
104 continue;102 '-' => '_',
105 }103 else => unreachable,
106 break;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);
107 }109 }
108 }110 }
109}111}