artificer/cli/main.zig

81 lines
2.2 KiB
Zig

const std = @import("std");
const builtin = @import("builtin");
const Allocator = std.mem.Allocator;
const Artificer = @import("artificer");
const Api = @import("artifacts-api");
// zig fmt: off
pub const std_options = .{
.log_scope_levels = &[_]std.log.ScopeLevel{
.{ .scope = .api, .level = .info },
}
};
// zig fmt: on
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();
var store = try Api.Store.init(allocator);
defer store.deinit(allocator);
var server = try Api.Server.init(allocator, &store);
defer server.deinit();
try server.setToken(token);
const resources = try server.getResources(allocator, .{});
resources.deinit();
// var artificer = try Artificer.init(allocator, token);
// defer artificer.deinit();
{
const status: Api.Status = try server.getStatus();
const file = try std.fs.cwd().createFile("api-store.bin", .{});
defer file.close();
try store.save(status.version.slice(), file.writer());
}
// std.log.info("Prefetching server data", .{});
// try artificer.server.prefetchCached(cache_path);
// if (false) {
// std.log.info("Starting main loop", .{});
// while (true) {
// const waitUntil = artificer.nextStepAt();
// const duration = waitUntil - std.time.milliTimestamp();
// if (duration > 0) {
// std.time.sleep(@intCast(duration));
// }
//
// try artificer.step();
// }
// }
}