diff --git a/src/gen.zig b/src/gen.zig index 3a77d82..7e7787f 100644 --- a/src/gen.zig +++ b/src/gen.zig @@ -17,8 +17,12 @@ pub fn generate() !void { .str("path", maivi.config.buildroot).log(); arena = .init(maivi.allocator); + defer arena.deinit(); allocator = arena.allocator(); + var threaded = Io.Threaded.init(maivi.allocator, .{}); + const io = threaded.io(); + Io.Dir.createDirAbsolute(maivi.io, maivi.config.buildroot, .default_dir) catch |err| switch (err) { error.PathAlreadyExists => {}, else => return err, @@ -32,7 +36,7 @@ pub fn generate() !void { fern.debug().ctx("gen.generate").msg("generating path").str("path", path).log(); - genpath(buildroot, path) catch |err| { + genpath(io, buildroot, path) catch |err| { fern.err().ctx("gen.generate") .msg("could not generate path") .str("path", path) @@ -47,11 +51,9 @@ pub fn generate() !void { continue; }; } - - arena.deinit(); } -fn genpath(dir: Io.Dir, path: []const u8) !?void { +fn genpath(io: Io, dir: Io.Dir, path: []const u8) !?void { const str = try maivi.router.get(maivi.lua.lua, maivi.allocator, path) orelse return null; defer maivi.allocator.free(str); @@ -66,8 +68,8 @@ fn genpath(dir: Io.Dir, path: []const u8) !?void { .str("path", path) .str("outpath", outpath).log(); if (std.mem.cutScalarLast(u8, outpath, '/')) |outpath_parts| try mkdir(dir, outpath_parts[0]); - const file = try dir.createFile(maivi.io, outpath, .{ .lock = .exclusive }); - try file.writeStreamingAll(maivi.io, str); + const file = try dir.createFile(io, outpath, .{ .lock = .exclusive }); + try file.writeStreamingAll(io, str); } // helpers ====================================================================