const std = @import("std"); const Artificer = @import("artificer"); const Allocator = std.mem.Allocator; fn getAPITokenFromArgs(allocator: Allocator) !?[]u8 { const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); if (args.len < 2) { return null; } const filename = args[1]; const cwd = std.fs.cwd(); var token_buffer: [256]u8 = undefined; const token = try cwd.readFile(filename, &token_buffer); return try allocator.dupe(u8, std.mem.trim(u8,token,"\n\t ")); } pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const allocator = gpa.allocator(); const token = (try getAPITokenFromArgs(allocator)) orelse return error.MissingToken; defer allocator.free(token); var artificer = try Artificer.init(allocator, token); defer artificer.deinit(); std.log.info("Starting main loop", .{}); while (true) { const waitUntil = artificer.nextStepAt(); const duration = waitUntil - std.time.timestamp(); if (duration > 0) { std.time.sleep(@intCast(duration)); } try artificer.step(); } }