use config file as sole param

This commit is contained in:
Hamcha 2024-05-07 23:58:26 +02:00
parent 543610c6d8
commit 07d34128dd
Signed by: hamcha
GPG key ID: 1669C533B8CF6D89
2 changed files with 30 additions and 10 deletions

2
.gitignore vendored
View file

@ -2,4 +2,4 @@ zig-cache
zig-out zig-out
*.bdf *.bdf
out out
*.font.zon *.font.json

View file

@ -1,6 +1,11 @@
const std = @import("std"); const std = @import("std");
const bdf = @import("bdf.zig"); const bdf = @import("bdf.zig");
const FontConfig = struct {
inputFile: []const u8,
outputFile: []const u8,
};
pub fn main() !void { pub fn main() !void {
// Get allocator // Get allocator
var gpa = std.heap.GeneralPurposeAllocator(.{}){}; var gpa = std.heap.GeneralPurposeAllocator(.{}){};
@ -11,21 +16,36 @@ pub fn main() !void {
const args = try std.process.argsAlloc(allocator); const args = try std.process.argsAlloc(allocator);
defer std.process.argsFree(allocator, args); defer std.process.argsFree(allocator, args);
if (args.len < 4) { if (args.len < 2) {
std.log.err("Usage: {s} <input.bdf> <input.zon> <output-dir>", .{args[0]}); std.log.err("Usage: {s} <config.json>", .{args[0]});
std.process.exit(1); std.process.exit(1);
} }
const inputFile = args[1]; const inputConfig = args[1];
const inputConfig = args[2];
_ = inputConfig; // autofix
const outputPath = args[3];
_ = outputPath; // autofix
// Read font // Read config
const input = try std.fs.cwd().openFile(inputFile, .{}); const configFile = try std.fs.cwd().readFileAlloc(allocator, inputConfig, std.math.maxInt(usize));
defer allocator.free(configFile);
const fontConfig = try readConfig(allocator, configFile);
defer fontConfig.deinit();
const input = try std.fs.cwd().openFile(fontConfig.value.inputFile, .{});
defer input.close(); defer input.close();
var font = try bdf.parse(allocator, input.reader()); var font = try bdf.parse(allocator, input.reader());
defer font.deinit(allocator); defer font.deinit(allocator);
} }
fn readConfig(allocator: std.mem.Allocator, input: []u8) !std.json.Parsed(FontConfig) {
const fontConfig = try std.json.parseFromSlice(
FontConfig,
allocator,
input,
.{
.ignore_unknown_fields = true,
},
);
return fontConfig;
}