authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2021-03-13 14:09:34+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-03-14 17:22:48-04:00
logd33f0d3375c621db479fbf565855c7d2a7eea735
treedd190d5f0ea998c7a201f626c61c464293827259
parentb98d7747fa7fb86d5f3f9bdbd00901e16fc58fca

docgen: Use Progress API

Really slow as usual but now looks slightly better.

1 files changed, 18 insertions(+), 5 deletions(-)

doc/docgen.zig+18-5
......@@ -4,6 +4,7 @@ const io = std.io;
44const fs = std.fs;
55const process = std.process;
66const ChildProcess = std.ChildProcess;
7const Progress = std.Progress;
78const print = std.debug.print;
89const mem = std.mem;
910const testing = std.testing;
......@@ -234,7 +235,7 @@ fn parseError(tokenizer: *Tokenizer, token: Token, comptime fmt: []const u8, arg
234235 }
235236 }
236237 {
237 const caret_count = token.end - token.start;
238 const caret_count = std.math.min(token.end, loc.line_end) - token.start;
238239 var i: usize = 0;
239240 while (i < caret_count) : (i += 1) {
240241 print("~", .{});
......@@ -1012,6 +1013,9 @@ fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: anytype, source_token: To
10121013
10131014fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: anytype, zig_exe: []const u8, do_code_tests: bool) !void {
10141015 var code_progress_index: usize = 0;
1016 var progress = Progress{};
1017 const root_node = try progress.start("Generating docgen examples", toc.nodes.len);
1018 defer root_node.end();
10151019
10161020 var env_map = try process.getEnvMap(allocator);
10171021 try env_map.set("ZIG_DEBUG_COLOR", "1");
......@@ -1058,8 +1062,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
10581062 try tokenizeAndPrint(tokenizer, out, content_tok);
10591063 },
10601064 .Code => |code| {
1061 code_progress_index += 1;
1062 print("docgen example code {}/{}...", .{ code_progress_index, tokenizer.code_node_count });
1065 root_node.completeOne();
10631066
10641067 const raw_source = tokenizer.buffer[code.source_token.start..code.source_token.end];
10651068 const trimmed_raw_source = mem.trim(u8, raw_source, " \n");
......@@ -1071,7 +1074,6 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
10711074 try out.writeAll("</pre>");
10721075
10731076 if (!do_code_tests) {
1074 print("SKIP\n", .{});
10751077 continue;
10761078 }
10771079
......@@ -1133,12 +1135,14 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
11331135 switch (result.term) {
11341136 .Exited => |exit_code| {
11351137 if (exit_code == 0) {
1138 progress.log("", .{});
11361139 print("{s}\nThe following command incorrectly succeeded:\n", .{result.stderr});
11371140 dumpArgs(build_args.items);
11381141 return parseError(tokenizer, code.source_token, "example incorrectly compiled", .{});
11391142 }
11401143 },
11411144 else => {
1145 progress.log("", .{});
11421146 print("{s}\nThe following command crashed:\n", .{result.stderr});
11431147 dumpArgs(build_args.items);
11441148 return parseError(tokenizer, code.source_token, "example compile crashed", .{});
......@@ -1187,6 +1191,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
11871191 switch (result.term) {
11881192 .Exited => |exit_code| {
11891193 if (exit_code == 0) {
1194 progress.log("", .{});
11901195 print("{s}\nThe following command incorrectly succeeded:\n", .{result.stderr});
11911196 dumpArgs(run_args);
11921197 return parseError(tokenizer, code.source_token, "example incorrectly compiled", .{});
......@@ -1266,18 +1271,21 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
12661271 switch (result.term) {
12671272 .Exited => |exit_code| {
12681273 if (exit_code == 0) {
1274 progress.log("", .{});
12691275 print("{s}\nThe following command incorrectly succeeded:\n", .{result.stderr});
12701276 dumpArgs(test_args.items);
12711277 return parseError(tokenizer, code.source_token, "example incorrectly compiled", .{});
12721278 }
12731279 },
12741280 else => {
1281 progress.log("", .{});
12751282 print("{s}\nThe following command crashed:\n", .{result.stderr});
12761283 dumpArgs(test_args.items);
12771284 return parseError(tokenizer, code.source_token, "example compile crashed", .{});
12781285 },
12791286 }
12801287 if (mem.indexOf(u8, result.stderr, error_match) == null) {
1288 progress.log("", .{});
12811289 print("{s}\nExpected to find '{s}' in stderr\n", .{ result.stderr, error_match });
12821290 return parseError(tokenizer, code.source_token, "example did not have expected compile error", .{});
12831291 }
......@@ -1321,18 +1329,21 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
13211329 switch (result.term) {
13221330 .Exited => |exit_code| {
13231331 if (exit_code == 0) {
1332 progress.log("", .{});
13241333 print("{s}\nThe following command incorrectly succeeded:\n", .{result.stderr});
13251334 dumpArgs(test_args.items);
13261335 return parseError(tokenizer, code.source_token, "example test incorrectly succeeded", .{});
13271336 }
13281337 },
13291338 else => {
1339 progress.log("", .{});
13301340 print("{s}\nThe following command crashed:\n", .{result.stderr});
13311341 dumpArgs(test_args.items);
13321342 return parseError(tokenizer, code.source_token, "example compile crashed", .{});
13331343 },
13341344 }
13351345 if (mem.indexOf(u8, result.stderr, error_match) == null) {
1346 progress.log("", .{});
13361347 print("{s}\nExpected to find '{s}' in stderr\n", .{ result.stderr, error_match });
13371348 return parseError(tokenizer, code.source_token, "example did not have expected runtime safety error message", .{});
13381349 }
......@@ -1400,18 +1411,21 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
14001411 switch (result.term) {
14011412 .Exited => |exit_code| {
14021413 if (exit_code == 0) {
1414 progress.log("", .{});
14031415 print("{s}\nThe following command incorrectly succeeded:\n", .{result.stderr});
14041416 dumpArgs(build_args.items);
14051417 return parseError(tokenizer, code.source_token, "example build incorrectly succeeded", .{});
14061418 }
14071419 },
14081420 else => {
1421 progress.log("", .{});
14091422 print("{s}\nThe following command crashed:\n", .{result.stderr});
14101423 dumpArgs(build_args.items);
14111424 return parseError(tokenizer, code.source_token, "example compile crashed", .{});
14121425 },
14131426 }
14141427 if (mem.indexOf(u8, result.stderr, error_match) == null) {
1428 progress.log("", .{});
14151429 print("{s}\nExpected to find '{s}' in stderr\n", .{ result.stderr, error_match });
14161430 return parseError(tokenizer, code.source_token, "example did not have expected compile error message", .{});
14171431 }
......@@ -1461,7 +1475,6 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
14611475 try out.print("\n{s}{s}</code></pre>\n", .{ escaped_stderr, escaped_stdout });
14621476 },
14631477 }
1464 print("OK\n", .{});
14651478 },
14661479 }
14671480 }