const std = @import("std"); const debug = std.debug; const Day = @import("utils/day.zig").Day; const Map = std.AutoHashMap(usize, Day); const import_days = struct { pub const day01 = @import("days/day01.zig"); }; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const alloc = gpa.allocator(); const args = try std.process.argsAlloc(alloc); defer std.process.argsFree(alloc, args); if (args.len < 2) return error.InvalidArgs; const arg_day_nb = try std.fmt.parseInt(usize, args[1], 10); var days = Map.init(alloc); defer days.deinit(); debug.print("Running day {d}\n", .{arg_day_nb}); inline for (comptime std.meta.declarations(import_days)) |decl| { const day_str = decl.name[3..]; // Skip "day" prefix const day_number = try std.fmt.parseInt(usize, day_str, 10); if (day_number == arg_day_nb) { const imported_day = @field(import_days, decl.name).Day; const day = Day{ .nb = imported_day.nb, .part1 = imported_day.part1, .part2 = imported_day.part2 }; // TODO: get the correct input values const buffer = "coucou"; day.part1(buffer); day.part2(buffer); break; } } }