authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-09-12 17:16:41 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-09-12 17:16:41 -07:00
loged7f7186cdafaeb3c257c5de14a8d7662c8a8237
treec1ad76808d244127e09fe178f605c69ca78c4c07
parent1948b07892e0dcc4bf5351dbfe712004285ea623

forgot to replace `-` with `_` in env var search


2 files changed, 14 insertions(+), 2 deletions(-)

src/lib.zig+13-2
...@@ -2,6 +2,7 @@ const std = @import("std");...@@ -2,6 +2,7 @@ const std = @import("std");
2const string = []const u8;2const string = []const u8;
3const List = std.ArrayList(string);3const List = std.ArrayList(string);
4const extras = @import("extras");4const extras = @import("extras");
5const range = @import("range").range;
56
6var singles: std.StringArrayHashMap(string) = undefined;7var singles: std.StringArrayHashMap(string) = undefined;
7var multis: std.StringArrayHashMap(List) = undefined;8var multis: std.StringArrayHashMap(List) = undefined;
...@@ -66,7 +67,7 @@ pub fn parseEnv() !void {...@@ -66,7 +67,7 @@ pub fn parseEnv() !void {
66 const alloc = singles.allocator;67 const alloc = singles.allocator;
6768
68 for (singles.keys()) |jtem| {69 for (singles.keys()) |jtem| {
69 const u = try extras.asciiUpper(alloc, jtem);70 const u = try fixNameForEnv(alloc, jtem);
70 defer alloc.free(u);71 defer alloc.free(u);
71 if (std.os.getenv(u)) |value| {72 if (std.os.getenv(u)) |value| {
72 try singles.put(jtem, value);73 try singles.put(jtem, value);
...@@ -76,7 +77,7 @@ pub fn parseEnv() !void {...@@ -76,7 +77,7 @@ pub fn parseEnv() !void {
76 const e = multis.getEntry(jtem).?;77 const e = multis.getEntry(jtem).?;
77 var n: usize = 1;78 var n: usize = 1;
78 while (true) : (n += 1) {79 while (true) : (n += 1) {
79 const u = try extras.asciiUpper(alloc, e.key_ptr.*);80 const u = try fixNameForEnv(alloc, e.key_ptr.*);
80 defer alloc.free(u);81 defer alloc.free(u);
81 const k = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n });82 const k = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n });
82 defer alloc.free(k);83 defer alloc.free(k);
...@@ -89,6 +90,16 @@ pub fn parseEnv() !void {...@@ -89,6 +90,16 @@ pub fn parseEnv() !void {
89 }90 }
90}91}
9192
93fn fixNameForEnv(alloc: *std.mem.Allocator, input: string) !string {
94 var ret = try extras.asciiUpper(alloc, input);
95 for (range(ret.len)) |_, i| {
96 if (ret[i] == '-') {
97 ret[i] = '_';
98 }
99 }
100 return ret;
101}
102
92pub fn getSingle(name: string) ?string {103pub fn getSingle(name: string) ?string {
93 const x = singles.get(name).?;104 const x = singles.get(name).?;
94 return if (x.len > 0) x else null;105 return if (x.len > 0) x else null;
zig.mod+1
...@@ -5,3 +5,4 @@ license: MIT...@@ -5,3 +5,4 @@ license: MIT
5description: Config management for Zig.5description: Config management for Zig.
6dependencies:6dependencies:
7 - src: git https://github.com/nektro/zig-extras7 - src: git https://github.com/nektro/zig-extras
8 - src: git https://github.com/nektro/zig-range