From c9db46235ed5b8c51935ac105874909400e9ec93 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 8 Feb 2026 15:52:26 +0900 Subject: support --debug-dump-disasm --- src/main.zig | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 73d7886..51b2262 100644 --- a/src/main.zig +++ b/src/main.zig @@ -8,11 +8,20 @@ pub fn main() !void { const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); - if (args.len < 2) { - try std.fs.File.stderr().writeAll("usage: zgjq \n"); + var debug_dump_disasm = false; + var query: ?[]const u8 = null; + for (args[1..]) |arg| { + if (std.mem.eql(u8, arg, "--debug-dump-disasm")) { + debug_dump_disasm = true; + } else if (query == null) { + query = arg; + } + } + + if (query == null) { + try std.fs.File.stderr().writeAll("usage: zgjq [--debug-dump-disasm] \n"); std.process.exit(1); } - const query = args[1]; const input = try std.fs.File.stdin().readToEndAlloc(allocator, std.math.maxInt(usize)); defer allocator.free(input); @@ -23,7 +32,15 @@ pub fn main() !void { var runtime = try jq.Runtime.init(allocator); defer runtime.deinit(); - try runtime.compileFromSlice(query); + try runtime.compileFromSlice(query.?); + + if (debug_dump_disasm) { + var buf: [4096]u8 = undefined; + var stderr = std.fs.File.stderr().writer(&buf); + try runtime.dumpDisasm(&stderr.interface); + try stderr.interface.flush(); + } + try runtime.start(json); const stdout = std.fs.File.stdout(); -- cgit v1.3-1-g0d28