aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/main.zig b/src/main.zig
index 51b2262..40a18ba 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -2,11 +2,11 @@ const std = @import("std");
const jq = @import("zgjq").jq;
const jv = @import("zgjq").jv;
-pub fn main() !void {
- const allocator = std.heap.smp_allocator;
+pub fn main(init: std.process.Init) !void {
+ const allocator = init.gpa;
- const args = try std.process.argsAlloc(allocator);
- defer std.process.argsFree(allocator, args);
+ const args = try init.minimal.args.toSlice(allocator);
+ defer allocator.free(args);
var debug_dump_disasm = false;
var query: ?[]const u8 = null;
@@ -19,11 +19,13 @@ pub fn main() !void {
}
if (query == null) {
- try std.fs.File.stderr().writeAll("usage: zgjq [--debug-dump-disasm] <query>\n");
+ try std.Io.File.stderr().writeStreamingAll(init.io, "usage: zgjq [--debug-dump-disasm] <query>\n");
std.process.exit(1);
}
- const input = try std.fs.File.stdin().readToEndAlloc(allocator, std.math.maxInt(usize));
+ var stdin_buf: [4096]u8 = undefined;
+ var stdin_reader = std.Io.File.stdin().reader(init.io, &stdin_buf);
+ const input = try stdin_reader.interface.allocRemaining(allocator, std.Io.Limit.unlimited);
defer allocator.free(input);
const parsed = try jv.parse(allocator, input);
@@ -35,19 +37,19 @@ pub fn main() !void {
try runtime.compileFromSlice(query.?);
if (debug_dump_disasm) {
- var buf: [4096]u8 = undefined;
- var stderr = std.fs.File.stderr().writer(&buf);
+ var stderr_buf: [4096]u8 = undefined;
+ var stderr = std.Io.File.stderr().writer(init.io, &stderr_buf);
try runtime.dumpDisasm(&stderr.interface);
try stderr.interface.flush();
}
try runtime.start(json);
- const stdout = std.fs.File.stdout();
+ const stdout = std.Io.File.stdout();
while (try runtime.next()) |result| {
const output = try jv.stringify(allocator, result);
defer allocator.free(output);
- try stdout.writeAll(output);
- try stdout.writeAll("\n");
+ try stdout.writeStreamingAll(init.io, output);
+ try stdout.writeStreamingAll(init.io, "\n");
}
}