diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-08 15:52:26 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-08 15:52:26 +0900 |
| commit | c9db46235ed5b8c51935ac105874909400e9ec93 (patch) | |
| tree | 30cad69a359a8f9a58550e0b73065218242b57cd /src/main.zig | |
| parent | beff4b6048cc3783d538769a307f8e679a33894c (diff) | |
| download | zgjq-c9db46235ed5b8c51935ac105874909400e9ec93.tar.gz zgjq-c9db46235ed5b8c51935ac105874909400e9ec93.tar.zst zgjq-c9db46235ed5b8c51935ac105874909400e9ec93.zip | |
support --debug-dump-disasm
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 25 |
1 files changed, 21 insertions, 4 deletions
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 <query>\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] <query>\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(); |
