diff --git a/README.md b/README.md index a1dd2b568af86cd6f4d6785625c65988f91a4a73..3c2008e8eab1397dfce716eeaaac5491c072c86f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![loc](https://sloc.xyz/github/nektro/zig-flag) [![license](https://img.shields.io/github/license/nektro/zig-flag.svg)](https://github.com/nektro/zig-flag/blob/master/LICENSE) [![nektro @ github sponsors](https://img.shields.io/badge/sponsors-nektro-purple?logo=github)](https://github.com/sponsors/nektro) -[![Zig](https://img.shields.io/badge/Zig-0.15-f7a41d)](https://ziglang.org/) +[![Zig](https://img.shields.io/badge/Zig-0.16-f7a41d)](https://ziglang.org/) [![Zigmod](https://img.shields.io/badge/Zigmod-latest-f7a41d)](https://github.com/nektro/zigmod) Config management for Zig. diff --git a/build.zig b/build.zig index c8b2f465b5dea81068c5ee06448be09756f48b84..691ea5f05fe8afee54f787f133ee48b396977f8f 100644 --- a/build.zig +++ b/build.zig @@ -14,7 +14,7 @@ pub fn build(b: *std.Build) void { }), }); deps.addAllTo(tests); - tests.linkLibC(); + tests.root_module.link_libc = true; tests.use_llvm = !disable_llvm; tests.use_lld = !disable_llvm; b.getInstallStep().dependOn(&tests.step); diff --git a/src/lib.zig b/src/lib.zig index e57bff87052a75ab5e98a73ae6250a313de0295f..9cc0cadee114f7456cd6fc6589d05ee7c7b7d309 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -10,28 +10,28 @@ const sys = switch (builtin.target.os.tag) { else => unreachable, // TODO: }; -var singles: std.ArrayHashMap(string, string, std.array_hash_map.StringContext, true) = undefined; -var multis: std.ArrayHashMap(string, List, std.array_hash_map.StringContext, true) = undefined; +var allocator: std.mem.Allocator = undefined; +var singles: std.array_hash_map.String(string) = .empty; +var multis: std.array_hash_map.String(List) = .empty; pub fn init(alloc: std.mem.Allocator) void { - singles = std.ArrayHashMap(string, string, std.array_hash_map.StringContext, true).init(alloc); - multis = std.ArrayHashMap(string, List, std.array_hash_map.StringContext, true).init(alloc); + allocator = alloc; } pub fn deinit() void { - singles.deinit(); + singles.deinit(allocator); for (multis.values()) |array_list| { array_list.deinit(); } - multis.deinit(); + multis.deinit(allocator); } pub fn addSingle(name: string) !void { - try singles.putNoClobber(name, ""); + try singles.putNoClobber(allocator, name, ""); } pub fn addMulti(name: string) !void { - try multis.putNoClobber(name, List.init(multis.allocator)); + try multis.putNoClobber(allocator, name, List.init(allocator)); } pub const FlagDashKind = enum { @@ -46,9 +46,9 @@ pub const FlagDashKind = enum { } }; -pub fn parse(k: FlagDashKind) !std.process.ArgIterator { +pub fn parse(k: FlagDashKind, args: std.process.Args) !std.process.Args.Iterator { const dash = k.hypen(); - var argiter = try std.process.argsWithAllocator(singles.allocator); + var argiter = args.iterate(); defer argiter.deinit(); var argi: usize = 0; blk: while (argiter.next()) |item| : (argi += 1) { @@ -61,7 +61,7 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator { if (std.mem.eql(u8, name, jtem)) { const value = argiter.next().?; argi += 1; - try singles.put(name, value); + try singles.put(allocator, name, value); continue :blk; } } diff --git a/test.zig b/test.zig index d5a1e36edd2a079c6c9919c5023024ce02e569cf..547543b6592ac710576f6b69d14fdae3e18e4943 100644 --- a/test.zig +++ b/test.zig @@ -2,5 +2,13 @@ const std = @import("std"); const flag = @import("flag"); test { - std.testing.refAllDeclsRecursive(flag); + _ = &flag.init; + _ = &flag.deinit; + _ = &flag.addSingle; + _ = &flag.addMulti; + _ = &flag.parse; + _ = &flag.parseEnv; + _ = &flag.getSingle; + _ = &flag.getMulti; + _ = &flag.getBool; }