authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-06-18 22:05:23 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-06-18 22:05:23 -07:00
logd5f3d9ad04713fe889980e05a2a725d5ad4c8b57
tree71ff8a72b340f01cb26a4fd6dcc0b82b785b4e7e
parentc04a957c4a5571a2e633e57db3e5c7160df04dc9

lots of fixes, update to zig master 0.11.0-dev.3620+c76ce25a6


18 files changed, 61 insertions(+), 72 deletions(-)

.github/workflows/nightly.yml+1-1
......@@ -26,7 +26,7 @@ jobs:
2626 - name: Setup Zig
2727 uses: goto-bus-stop/setup-zig@v1
2828 with:
29 version: "0.11.0-dev.2777+b95cdf0ae"
29 version: "0.11.0-dev.3620+c76ce25a6"
3030
3131 - run: zig version
3232 - run: zig env
.github/workflows/push.yml+1-1
......@@ -19,7 +19,7 @@ jobs:
1919 - name: Setup Zig
2020 uses: goto-bus-stop/setup-zig@v1
2121 with:
22 version: "0.11.0-dev.2777+b95cdf0ae"
22 version: "0.11.0-dev.3620+c76ce25a6"
2323
2424 - run: zig version
2525 - run: zig env
README.md+1-1
......@@ -17,7 +17,7 @@ A package manager for the Zig programming language.
1717- https://github.com/nektro/zigmod/releases
1818
1919## Built With
20- Zig master (at least `0.11.0-dev.2777+b95cdf0ae`)
20- Zig master (at least `0.11.0-dev.3620+c76ce25a6`)
2121- See [`zig.mod`](./zig.mod) and [`zigmod.lock`](./zigmod.lock)
2222
2323### Build from Source
deps.zig+14-21
......@@ -57,18 +57,17 @@ pub fn fetch(exe: *std.build.LibExeObjStep) void {
5757 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/MasterQ32/zig-uri", "d4299ad6043ad19f2ce0676687b0bff57273eae2").step);
5858 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/marlersoft/zigwin32", "b70e7f818d77a0c0f39b0bd9c549e16439ff5780").step);
5959 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/arqv-ini", "ee395fd34e152d9067def609d86b7af5382b83b1").step);
60 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/iguanaTLS", "9356ff1d2edf627b531a2829a679a7b6d908a6ca").step);
60 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/iguanaTLS", "e70995575b397f33d798339d4f1656bcdf0ab82f").step);
6161 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-ansi", "faf9585bfe5980c24748ee8a3e6a22faaa50b437").step);
6262 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-detect-license", "8f13721bd18c0e546841b6f2e11da839550d6287").step);
63 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-extras", "a74468be60283e66e9b20388372394b54219d6b0").step);
63 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-extras", "ff267312e8d714c9b9d8c44ad3291f6e509dc12f").step);
6464 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-inquirer", "5cc2a5565d04fe2c0085f0d6818590e800d9dcf7").step);
65 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-json", "b0111b41d725682629b7f899b90500ddad3818bf").step);
6665 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-leven", "550cabd5a18ace5e67761bc5b867c10e926f4314").step);
6766 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-licenses", "c9b8cbf3565675a056ad4e9b57cb4f84020e7680").step);
6867 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-licenses-text", "3c07c6e4eb0965dafd0b029c632f823631b3169c").step);
6968 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-range", "4b2f12808aa09be4b27a163efc424dd4e0415992").step);
70 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-time", "6094c777eb7b7fbadbf5102f3872d3ad0a2a630e").step);
71 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-yaml", "3f3641e90697546e7f8aeef365815c4ccab168b0").step);
69 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-time", "ca9c0e6b644d74c1d549cc2c1ee22113aa021bd8").step);
70 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/nektro/zig-yaml", "e56b9fed6c0afd1c4d29bedc08c3899ffe1165e9").step);
7271 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/truemedian/hzzp", "501386e13b2f7849128f3b271d23de6127b1d9d7").step);
7372 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/truemedian/zfetch", "829973144f680cd16be16923041fa810c1dee417").step);
7473 exe.step.dependOn(&GitExactStep.create(b, "https://github.com/ziglibs/known-folders", "d13ba6137084e55f873f6afb67447fe8906cc951").step);
......@@ -158,7 +157,7 @@ pub const Package = struct {
158157};
159158
160159fn checkMinZig(current: std.SemanticVersion, exe: *std.build.LibExeObjStep) void {
161 const min = std.SemanticVersion.parse("0.11.0-dev.2777+b95cdf0ae") catch return;
160 const min = std.SemanticVersion.parse("0.11.0-dev.3620+c76ce25a6") catch return;
162161 if (current.order(min).compare(.lt)) @panic(exe.step.owner.fmt("Your Zig version v{} does not meet the minimum build requirement of v{}", .{current, min}));
163162}
164163
......@@ -179,9 +178,9 @@ pub const package_data = struct {
179178 .entry = "/git/github.com/nektro/arqv-ini/ee395fd34e152d9067def609d86b7af5382b83b1/src/ini.zig",
180179 };
181180 pub var _csbnipaad8n7 = Package{
182 .store = "/git/github.com/nektro/iguanaTLS/9356ff1d2edf627b531a2829a679a7b6d908a6ca",
181 .store = "/git/github.com/nektro/iguanaTLS/e70995575b397f33d798339d4f1656bcdf0ab82f",
183182 .name = "iguanaTLS",
184 .entry = "/git/github.com/nektro/iguanaTLS/9356ff1d2edf627b531a2829a679a7b6d908a6ca/src/main.zig",
183 .entry = "/git/github.com/nektro/iguanaTLS/e70995575b397f33d798339d4f1656bcdf0ab82f/src/main.zig",
185184 };
186185 pub var _s84v9o48ucb0 = Package{
187186 .store = "/git/github.com/nektro/zig-ansi/faf9585bfe5980c24748ee8a3e6a22faaa50b437",
......@@ -189,15 +188,9 @@ pub const package_data = struct {
189188 .entry = "/git/github.com/nektro/zig-ansi/faf9585bfe5980c24748ee8a3e6a22faaa50b437/src/lib.zig",
190189 };
191190 pub var _f7dubzb7cyqe = Package{
192 .store = "/git/github.com/nektro/zig-extras/a74468be60283e66e9b20388372394b54219d6b0",
191 .store = "/git/github.com/nektro/zig-extras/ff267312e8d714c9b9d8c44ad3291f6e509dc12f",
193192 .name = "extras",
194 .entry = "/git/github.com/nektro/zig-extras/a74468be60283e66e9b20388372394b54219d6b0/src/lib.zig",
195 };
196 pub var _ocmr9rtohgcc = Package{
197 .store = "/git/github.com/nektro/zig-json/b0111b41d725682629b7f899b90500ddad3818bf",
198 .name = "json",
199 .entry = "/git/github.com/nektro/zig-json/b0111b41d725682629b7f899b90500ddad3818bf/src/lib.zig",
200 .deps = &[_]*Package{ &_f7dubzb7cyqe },
193 .entry = "/git/github.com/nektro/zig-extras/ff267312e8d714c9b9d8c44ad3291f6e509dc12f/src/lib.zig",
201194 };
202195 pub var _0npcrzfdlrvk = Package{
203196 .store = "/git/github.com/nektro/zig-licenses/c9b8cbf3565675a056ad4e9b57cb4f84020e7680",
......@@ -233,15 +226,15 @@ pub const package_data = struct {
233226 .deps = &[_]*Package{ &_pt88y5d80m25, &_96h80ezrvj7i },
234227 };
235228 pub var _iecwp4b3bsfm = Package{
236 .store = "/git/github.com/nektro/zig-time/6094c777eb7b7fbadbf5102f3872d3ad0a2a630e",
229 .store = "/git/github.com/nektro/zig-time/ca9c0e6b644d74c1d549cc2c1ee22113aa021bd8",
237230 .name = "time",
238 .entry = "/git/github.com/nektro/zig-time/6094c777eb7b7fbadbf5102f3872d3ad0a2a630e/time.zig",
231 .entry = "/git/github.com/nektro/zig-time/ca9c0e6b644d74c1d549cc2c1ee22113aa021bd8/time.zig",
239232 .deps = &[_]*Package{ &_f7dubzb7cyqe },
240233 };
241234 pub var _g982zq6e8wsv = Package{
242 .store = "/git/github.com/nektro/zig-yaml/3f3641e90697546e7f8aeef365815c4ccab168b0",
235 .store = "/git/github.com/nektro/zig-yaml/e56b9fed6c0afd1c4d29bedc08c3899ffe1165e9",
243236 .name = "yaml",
244 .entry = "/git/github.com/nektro/zig-yaml/3f3641e90697546e7f8aeef365815c4ccab168b0/yaml.zig",
237 .entry = "/git/github.com/nektro/zig-yaml/e56b9fed6c0afd1c4d29bedc08c3899ffe1165e9/yaml.zig",
245238 .deps = &[_]*Package{ &_f7dubzb7cyqe },
246239 };
247240 pub var _9k24gimke1an = Package{
......@@ -263,7 +256,7 @@ pub const package_data = struct {
263256 pub var _89ujp8gq842x = Package{
264257 .name = "zigmod",
265258 .entry = "/../..//src/lib.zig",
266 .deps = &[_]*Package{ &_g982zq6e8wsv, &_s84v9o48ucb0, &_2ta738wrqbaq, &_0npcrzfdlrvk, &_ejw82j2ipa0e, &_ocmr9rtohgcc, &_2ovav391ivak, &_c1xirp1ota5p, &_u7sysdckdymi, &_iecwp4b3bsfm, &_f7dubzb7cyqe },
259 .deps = &[_]*Package{ &_g982zq6e8wsv, &_s84v9o48ucb0, &_2ta738wrqbaq, &_0npcrzfdlrvk, &_ejw82j2ipa0e, &_2ovav391ivak, &_c1xirp1ota5p, &_u7sysdckdymi, &_iecwp4b3bsfm, &_f7dubzb7cyqe },
267260 };
268261 pub var _root = Package{
269262 };
docs/README.md+1-1
......@@ -10,7 +10,7 @@ The rest of this documentation will assume you already have Zig installed.
1010
1111As Zig is still in development itself, if you plan to contribute to Zigmod you will need a master download of Zig. Those can be obtained from https://ziglang.org/download/#release-master.
1212
13The earliest Zig release this Zigmod was verified to work with is `0.11.0-dev.2777+b95cdf0ae`.
13The earliest Zig release this Zigmod was verified to work with is `0.11.0-dev.3620+c76ce25a6`.
1414
1515## Download
1616You may download a precompiled binary from https://github.com/nektro/zigmod/releases or build the project from source.
licenses.txt-1
......@@ -9,7 +9,6 @@ MIT:
99- git https://github.com/nektro/zig-detect-license
1010- git https://github.com/nektro/zig-extras
1111- git https://github.com/nektro/zig-inquirer
12- git https://github.com/nektro/zig-json
1312- git https://github.com/nektro/zig-leven
1413- git https://github.com/nektro/zig-licenses
1514- git https://github.com/nektro/zig-licenses-text
src/cmd/aq.zig+5-5
......@@ -2,7 +2,7 @@ const std = @import("std");
22const string = []const u8;
33const gpa = std.heap.c_allocator;
44const zfetch = @import("zfetch");
5const json = @import("json");
5const extras = @import("extras");
66
77const u = @import("./../util/index.zig");
88
......@@ -43,7 +43,7 @@ pub fn execute(args: [][]u8) !void {
4343 u.fail("unknown command \"{s}\" for \"zigmod aq\"", .{args[0]});
4444}
4545
46pub fn server_fetch(url: string) !json.Value {
46pub fn server_fetch(url: string) !std.json.ValueTree {
4747 const req = try zfetch.Request.init(gpa, url, null);
4848 defer req.deinit();
4949
......@@ -55,10 +55,10 @@ pub fn server_fetch(url: string) !json.Value {
5555
5656 const r = req.reader();
5757 const body_content = try r.readAllAlloc(gpa, std.math.maxInt(usize));
58 const val = try json.parse(gpa, body_content);
58 const val = try extras.parse_json(gpa, body_content);
5959
60 if (val.getT("message", .String)) |msg| {
61 std.log.err("server: {s}", .{msg});
60 if (val.root.object.get("message")) |msg| {
61 std.log.err("server: {s}", .{msg.string});
6262 return error.AquilaBadResponse;
6363 }
6464 return val;
src/cmd/aquila/add.zig+2-2
......@@ -19,8 +19,8 @@ pub fn do(dir: std.fs.Dir, pkg_id: string) !string {
1919 const val = try aq.server_fetch(url);
2020
2121 const pkg_url = try std.fmt.allocPrint(gpa, "https://{s}/{s}", .{
22 val.getT(.{ "repo", "domain" }, .String).?,
23 val.getT(.{ "package", "remote_name" }, .String).?,
22 val.root.object.get("repo").?.object.get("domain").?.string,
23 val.root.object.get("package").?.object.get("remote_name").?.string,
2424 });
2525
2626 const m = try zigmod.ModFile.from_dir(gpa, dir);
src/cmd/fetch.zig+1-1
......@@ -165,7 +165,7 @@ fn create_lockfile(alloc: std.mem.Allocator, list: *std.ArrayList(zigmod.Module)
165165 const fl = try dir.createFile("zigmod.lock", .{});
166166 defer fl.close();
167167
168 std.sort.sort(zigmod.Module, list.items, {}, zigmod.Module.lessThan);
168 std.mem.sort(zigmod.Module, list.items, {}, zigmod.Module.lessThan);
169169
170170 const wl = fl.writer();
171171 try wl.writeAll("2\n");
src/cmd/generate.zig+1-1
......@@ -26,7 +26,7 @@ pub fn execute(args: [][]u8) !void {
2626 var list = std.ArrayList(zigmod.Module).init(gpa);
2727 try common.collect_pkgs(top_module, &list);
2828
29 std.sort.sort(zigmod.Module, list.items, {}, zigmod.Module.lessThan);
29 std.mem.sort(zigmod.Module, list.items, {}, zigmod.Module.lessThan);
3030
3131 try create_depszig(gpa, cachepath, dir, top_module, list.items);
3232}
src/cmd/license.zig+1-1
......@@ -29,7 +29,7 @@ pub fn execute(args: [][]u8) !void {
2929 var master_list = List.init(gpa);
3030 errdefer master_list.deinit();
3131 try common.collect_pkgs(top_module, &master_list);
32 std.sort.sort(zigmod.Module, master_list.items, {}, zigmod.Module.lessThan);
32 std.mem.sort(zigmod.Module, master_list.items, {}, zigmod.Module.lessThan);
3333
3434 var map = Map.init(gpa);
3535 errdefer map.deinit();
src/cmd/zpm.zig+20-21
......@@ -2,7 +2,7 @@ const std = @import("std");
22const string = []const u8;
33const gpa = std.heap.c_allocator;
44const zfetch = @import("zfetch");
5const json = @import("json");
5const extras = @import("extras");
66
77const u = @import("./../util/index.zig");
88
......@@ -55,14 +55,13 @@ pub fn execute(args: [][]u8) !void {
5555 u.fail("unknown command \"{s}\" for \"zigmod zpm\"", .{args[0]});
5656}
5757
58pub fn server_fetch(url: string) !json.Value {
58pub fn server_fetch(url: string) !std.json.ValueTree {
5959 const req = try zfetch.Request.init(gpa, url, null);
6060 defer req.deinit();
6161 try req.do(.GET, null, null);
6262 const r = req.reader();
6363 const body_content = try r.readAllAlloc(gpa, std.math.maxInt(usize));
64 const val = try json.parse(gpa, body_content);
65 return val;
64 return extras.parse_json(gpa, body_content);
6665}
6766
6867pub fn server_fetchArray(url: string) ![]const Package {
......@@ -70,39 +69,39 @@ pub fn server_fetchArray(url: string) ![]const Package {
7069 var list = std.ArrayList(Package).init(gpa);
7170 errdefer list.deinit();
7271
73 for (val.Array) |item| {
74 if (item.getT("root_file", .String) == null) continue;
72 for (val.root.array.items) |item| {
73 if (item.object.get("root_file") == null) continue;
7574 try list.append(Package{
76 .name = item.getT("name", .String).?,
77 .author = item.getT("author", .String).?,
78 .description = item.getT("description", .String).?,
79 .tags = try valueStrArray(item.getT("tags", .Array).?),
80 .git = item.getT("git", .String).?,
81 .root_file = item.getT("root_file", .String).?,
82 .source = @intCast(u32, item.getT("source", .Int).?),
83 .links = try valueLinks(item.get("links").?),
75 .name = item.object.get("name").?.string,
76 .author = item.object.get("author").?.string,
77 .description = item.object.get("description").?.string,
78 .tags = try valueStrArray(item.object.get("tags").?.array.items),
79 .git = item.object.get("git").?.string,
80 .root_file = item.object.get("root_file").?.string,
81 .source = @intCast(u32, item.object.get("source").?.integer),
82 .links = try valueLinks(item.object.get("links").?),
8483 });
8584 }
8685 return list.toOwnedSlice();
8786}
8887
89fn valueStrArray(vals: []json.Value) ![]string {
88fn valueStrArray(vals: []std.json.Value) ![]string {
9089 var list = std.ArrayList(string).init(gpa);
9190 errdefer list.deinit();
9291
9392 for (vals) |item| {
94 if (item != .String) continue;
95 try list.append(item.String);
93 if (item != .string) continue;
94 try list.append(item.string);
9695 }
9796 return list.toOwnedSlice();
9897}
9998
100fn valueLinks(vals: json.Value) ![]?string {
99fn valueLinks(vals: std.json.Value) ![]?string {
101100 var list = std.ArrayList(?string).init(gpa);
102101 errdefer list.deinit();
103102
104 try list.append(vals.getT("github", .String));
105 try list.append(vals.getT("aquila", .String));
106 try list.append(vals.getT("astrolabe", .String));
103 if (vals.object.get("github")) |x| try list.append(x.string);
104 if (vals.object.get("aquila")) |x| try list.append(x.string);
105 if (vals.object.get("astrolabe")) |x| try list.append(x.string);
107106 return list.toOwnedSlice();
108107}
src/cmd/zpm/tags.zig+5-5
......@@ -17,8 +17,8 @@ pub fn execute(args: [][]u8) !void {
1717
1818 const name_col_width = blk: {
1919 var w: usize = 4;
20 for (val.Array) |tag| {
21 const len = tag.getT("name", .String).?.len;
20 for (val.root.array.items) |tag| {
21 const len = tag.object.get("name").?.string.len;
2222 if (len > w) {
2323 w = len;
2424 }
......@@ -30,11 +30,11 @@ pub fn execute(args: [][]u8) !void {
3030 try print_c_n(out, ' ', name_col_width - 4);
3131 try out.writeAll("DESCRIPTION\n");
3232
33 for (val.Array) |tag| {
34 const name = tag.getT("name", .String).?;
33 for (val.root.array.items) |tag| {
34 const name = tag.object.get("name").?.string;
3535 try out.writeAll(name);
3636 try print_c_n(out, ' ', name_col_width - name.len);
37 try out.writeAll(tag.getT("description", .String).?);
37 try out.writeAll(tag.object.get("description").?.string);
3838 try out.writeAll("\n");
3939 }
4040}
src/common.zig+1-1
......@@ -297,7 +297,7 @@ pub fn add_files_package(alloc: std.mem.Allocator, cachepath: string, pkg_name:
297297 var walker = try dir.walk(alloc);
298298 defer walker.deinit();
299299 while (try walker.next()) |p| {
300 if (p.kind == .Directory) {
300 if (p.kind == .directory) {
301301 continue;
302302 }
303303 const path = try alloc.dupe(u8, p.path);
src/util/funcs.zig+1-1
......@@ -53,7 +53,7 @@ pub fn does_folder_exist(fpath: string) !bool {
5353 };
5454 defer file.close();
5555 const s = try file.stat();
56 if (s.kind != .Directory) {
56 if (s.kind != .directory) {
5757 return false;
5858 }
5959 return true;
src/util/module.zig+1-1
......@@ -74,7 +74,7 @@ pub const Module = struct {
7474 try file_list_2.append(_b);
7575 }
7676
77 std.sort.sort(string, file_list_2.items, void{}, struct {
77 std.mem.sort(string, file_list_2.items, void{}, struct {
7878 pub fn lt(context: void, lhs: string, rhs: string) bool {
7979 _ = context;
8080 return std.mem.lessThan(u8, lhs, rhs);
zig.mod+1-2
......@@ -3,14 +3,13 @@ name: zigmod
33main: src/lib.zig
44license: MIT
55description: A package manager for the Zig programming language.
6min_zig_version: 0.11.0-dev.2777+b95cdf0ae
6min_zig_version: 0.11.0-dev.3620+c76ce25a6
77dependencies:
88 - src: git https://github.com/nektro/zig-yaml
99 - src: git https://github.com/nektro/zig-ansi
1010 - src: git https://github.com/ziglibs/known-folders
1111 - src: git https://github.com/nektro/zig-licenses
1212 - src: git https://github.com/truemedian/zfetch
13 - src: git https://github.com/nektro/zig-json
1413 - src: git https://github.com/nektro/zig-detect-license
1514 - src: git https://github.com/nektro/zig-inquirer
1615 - src: git https://github.com/nektro/arqv-ini
zigmod.lock+4-5
......@@ -2,18 +2,17 @@
22git https://github.com/MasterQ32/zig-uri commit-d4299ad6043ad19f2ce0676687b0bff57273eae2
33git https://github.com/marlersoft/zigwin32 commit-b70e7f818d77a0c0f39b0bd9c549e16439ff5780
44git https://github.com/nektro/arqv-ini commit-ee395fd34e152d9067def609d86b7af5382b83b1
5git https://github.com/nektro/iguanaTLS commit-9356ff1d2edf627b531a2829a679a7b6d908a6ca
5git https://github.com/nektro/iguanaTLS commit-e70995575b397f33d798339d4f1656bcdf0ab82f
66git https://github.com/nektro/zig-ansi commit-faf9585bfe5980c24748ee8a3e6a22faaa50b437
77git https://github.com/nektro/zig-detect-license commit-8f13721bd18c0e546841b6f2e11da839550d6287
8git https://github.com/nektro/zig-extras commit-a74468be60283e66e9b20388372394b54219d6b0
8git https://github.com/nektro/zig-extras commit-ff267312e8d714c9b9d8c44ad3291f6e509dc12f
99git https://github.com/nektro/zig-inquirer commit-5cc2a5565d04fe2c0085f0d6818590e800d9dcf7
10git https://github.com/nektro/zig-json commit-b0111b41d725682629b7f899b90500ddad3818bf
1110git https://github.com/nektro/zig-leven commit-550cabd5a18ace5e67761bc5b867c10e926f4314
1211git https://github.com/nektro/zig-licenses commit-c9b8cbf3565675a056ad4e9b57cb4f84020e7680
1312git https://github.com/nektro/zig-licenses-text commit-3c07c6e4eb0965dafd0b029c632f823631b3169c
1413git https://github.com/nektro/zig-range commit-4b2f12808aa09be4b27a163efc424dd4e0415992
15git https://github.com/nektro/zig-time commit-6094c777eb7b7fbadbf5102f3872d3ad0a2a630e
16git https://github.com/nektro/zig-yaml commit-3f3641e90697546e7f8aeef365815c4ccab168b0
14git https://github.com/nektro/zig-time commit-ca9c0e6b644d74c1d549cc2c1ee22113aa021bd8
15git https://github.com/nektro/zig-yaml commit-e56b9fed6c0afd1c4d29bedc08c3899ffe1165e9
1716git https://github.com/truemedian/hzzp commit-501386e13b2f7849128f3b271d23de6127b1d9d7
1817git https://github.com/truemedian/zfetch commit-829973144f680cd16be16923041fa810c1dee417
1918git https://github.com/ziglibs/known-folders commit-d13ba6137084e55f873f6afb67447fe8906cc951