diff --git a/src/ascii.zig b/src/ascii.zig index 0ca4060..72eea58 100644 --- a/src/ascii.zig +++ b/src/ascii.zig @@ -65,18 +65,23 @@ test "parse ffffff" { try std.testing.expect((result.r == 255) and (result.g == 255) and (result.b == 255)); } -pub fn printAscii(allocator: std.mem.Allocator, sys_info_list: std.array_list.Managed([]u8)) !void { +pub fn printAscii(allocator: std.mem.Allocator, ascii_art_path: ?[]u8, sys_info_list: std.array_list.Managed([]u8)) !void { var stdout_buffer: [2048]u8 = undefined; var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); const stdout = &stdout_writer.interface; - // const ascii_art_path = "./assets/ascii/guy_fawks.txt"; - // var file = try std.fs.cwd().openFile(ascii_art_path, .{}); - // defer file.close(); - // const ascii_art_data = try file.readToEndAlloc(allocator, std.math.maxInt(usize)); - // defer allocator.free(ascii_art_data); + var ascii_art_data: []const u8 = undefined; + if (ascii_art_path) |ascii| { + var ascii_file = try std.fs.cwd().openFile(ascii, .{}); + defer ascii_file.close(); + ascii_art_data = try ascii_file.readToEndAlloc(allocator, std.math.maxInt(usize)); + } else { + ascii_art_data = @embedFile("./assets/ascii/guy_fawks.txt"); + } - const ascii_art_data = @embedFile("./assets/ascii/guy_fawks.txt"); + defer if (ascii_art_path != null) { + allocator.free(ascii_art_data); + }; var lines = std.mem.splitScalar(u8, ascii_art_data, '\n'); diff --git a/src/config.zig b/src/config.zig index b690cc2..c081bbd 100644 --- a/src/config.zig +++ b/src/config.zig @@ -9,6 +9,7 @@ pub const Module = struct { }; pub const Config = struct { + ascii_abs_path: ?[]u8 = null, modules: []Module, }; @@ -29,6 +30,10 @@ pub const ModuleType = enum { custom, }; +pub fn getAsciiPath(config: ?std.json.Parsed(Config)) ?[]u8 { + return config.?.value.ascii_abs_path; +} + pub fn getModulesTypes(allocator: std.mem.Allocator, config: ?std.json.Parsed(Config)) !std.array_list.Managed(ModuleType) { var modules_list = std.array_list.Managed(ModuleType).init(allocator); diff --git a/src/main.zig b/src/main.zig index 102c42d..eca8fc5 100644 --- a/src/main.zig +++ b/src/main.zig @@ -70,5 +70,5 @@ pub fn main() !void { } } - try ascii.printAscii(allocator, sys_info_list); + try ascii.printAscii(allocator, config.getAsciiPath(conf), sys_info_list); }