const std = @import("std"); const Module = @import("../module.zig"); const Self = @This(); module: Module, pub fn init(allocator: std.mem.Allocator) Self { return .{ .module = .{ .allocator = allocator, .getJsonFn = getJson, }, }; } pub fn getJson(module: *const Module) !Module.JSON { const self = @fieldParentPtr(Self, "module", module); var uptime_file = try std.fs.openFileAbsolute("/proc/uptime", .{}); defer uptime_file.close(); const uptime_string = try uptime_file.reader().readAllAlloc(self.module.allocator, 256); var uptime_split = std.mem.splitScalar(u8, uptime_string[0 .. uptime_string.len - 1], ' '); var uptime = try std.fmt.parseFloat(f32, uptime_split.first()); const days = uptime / std.time.s_per_day; uptime -= std.time.s_per_day * @floor(days); const hours = uptime / std.time.s_per_hour; uptime -= std.time.s_per_hour * @floor(hours); const mins = uptime / std.time.s_per_min; return .{ .full_text = try std.fmt.allocPrint(self.module.allocator, "{d:0>1.0}d {d:0>1.0}h {d:.0}m", .{ days, hours, mins }), }; }