| ... | @@ -3,6 +3,7 @@ const builtin = @import("builtin"); | ... | @@ -3,6 +3,7 @@ const builtin = @import("builtin"); |
| 3 | const std = @import("std"); | 3 | const std = @import("std"); |
| 4 | const Io = std.Io; | 4 | const Io = std.Io; |
| 5 | const Dir = std.Io.Dir; | 5 | const Dir = std.Io.Dir; |
| | 6 | const Path = std.Build.Cache.Path; |
| 6 | const process = std.process; | 7 | const process = std.process; |
| 7 | const Progress = std.Progress; | 8 | const Progress = std.Progress; |
| 8 | const print = std.debug.print; | 9 | const print = std.debug.print; |
| ... | @@ -73,8 +74,13 @@ pub fn main(init: std.process.Init) !void { | ... | @@ -73,8 +74,13 @@ pub fn main(init: std.process.Init) !void { |
| 73 | var out_file_buffer: [4096]u8 = undefined; | 74 | var out_file_buffer: [4096]u8 = undefined; |
| 74 | var out_file_writer = out_file.writer(io, &out_file_buffer); | 75 | var out_file_writer = out_file.writer(io, &out_file_buffer); |
| 75 | | 76 | |
| 76 | var code_dir = try Dir.cwd().openDir(io, code_dir_path, .{}); | 77 | var code_dir: Path = .{ |
| 77 | defer code_dir.close(io); | 78 | .root_dir = .{ |
| | 79 | .handle = try Dir.cwd().openDir(io, code_dir_path, .{}), |
| | 80 | .path = code_dir_path, |
| | 81 | }, |
| | 82 | }; |
| | 83 | defer code_dir.root_dir.handle.close(io); |
| 78 | | 84 | |
| 79 | var in_file_reader = in_file.reader(io, &.{}); | 85 | var in_file_reader = in_file.reader(io, &.{}); |
| 80 | const input_file_bytes = try in_file_reader.interface.allocRemaining(arena, .limited(max_doc_file_size)); | 86 | const input_file_bytes = try in_file_reader.interface.allocRemaining(arena, .limited(max_doc_file_size)); |
| ... | @@ -988,7 +994,7 @@ fn genHtml( | ... | @@ -988,7 +994,7 @@ fn genHtml( |
| 988 | io: Io, | 994 | io: Io, |
| 989 | tokenizer: *Tokenizer, | 995 | tokenizer: *Tokenizer, |
| 990 | toc: *Toc, | 996 | toc: *Toc, |
| 991 | code_dir: Dir, | 997 | code_dir: Path, |
| 992 | out: *Writer, | 998 | out: *Writer, |
| 993 | ) !void { | 999 | ) !void { |
| 994 | for (toc.nodes) |node| { | 1000 | for (toc.nodes) |node| { |
| ... | @@ -1044,8 +1050,13 @@ fn genHtml( | ... | @@ -1044,8 +1050,13 @@ fn genHtml( |
| 1044 | }); | 1050 | }); |
| 1045 | defer allocator.free(out_basename); | 1051 | defer allocator.free(out_basename); |
| 1046 | | 1052 | |
| 1047 | const contents = code_dir.readFileAlloc(io, out_basename, allocator, .limited(std.math.maxInt(u32))) catch |err| { | 1053 | const out_path: Path = .{ |
| 1048 | return parseError(tokenizer, code.token, "unable to open '{s}': {t}", .{ out_basename, err }); | 1054 | .root_dir = code_dir.root_dir, |
| | 1055 | .sub_path = out_basename, |
| | 1056 | }; |
| | 1057 | |
| | 1058 | const contents = out_path.root_dir.handle.readFileAlloc(io, out_path.sub_path, allocator, .unlimited) catch |err| { |
| | 1059 | return parseError(tokenizer, code.token, "failed opening {f}: {t}", .{ out_path, err }); |
| 1049 | }; | 1060 | }; |
| 1050 | defer allocator.free(contents); | 1061 | defer allocator.free(contents); |
| 1051 | | 1062 | |