java-class-parser/src/main.zig
2026-06-18 15:34:59 +00:00

49 lines
1.4 KiB
Zig

const std = @import("std");
const Class = @import("Class.zig");
pub fn main(init: std.process.Init) !void {
const io = init.io;
const allocator = init.gpa;
var args = try init.minimal.args.iterateAllocator(init.arena.allocator());
defer args.deinit();
var stderr_writer: std.Io.File.Writer = .init(.stderr(), io, &.{});
const stderr = &stderr_writer.interface;
var stdout_buf: [1024]u8 = undefined;
var stdout_writer: std.Io.File.Writer = .init(.stdout(), io, &stdout_buf);
const stdout = &stdout_writer.interface;
std.debug.assert(args.skip());
const file_path = if (args.next()) |fp| fp else {
try stderr.writeAll("No file argument provided.\n");
return;
};
const file = std.Io.Dir.cwd().openFile(io, file_path, .{}) catch |err| switch (err) {
error.FileNotFound => {
try stderr.writeAll("File not found.\n");
return;
},
error.IsDir => {
try stderr.writeAll("Path is a directory.\n");
return;
},
else => return err,
};
defer file.close(io);
var file_buf: [1024]u8 = undefined;
var file_reader = file.reader(io, &file_buf);
const reader = &file_reader.interface;
var class = try Class.parse(reader, allocator);
defer class.deinit();
try stdout.print("{f}", .{ class });
try stdout.flush();
}