From 7490ff3bc59e51320f850a917fd50ade18950eac Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Sat, 12 Jul 2025 18:06:16 -0700 Subject: [PATCH] back to file approach --- src/main.zig | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main.zig b/src/main.zig index 913854b..e3062fb 100644 --- a/src/main.zig +++ b/src/main.zig @@ -71,6 +71,7 @@ pub fn main() !u8 { } const config_path = args[1]; + const output_file = if (args.len >= 3) args[2] else "releases.xml"; var app_config = config.loadConfig(allocator, config_path) catch |err| { print("Error loading config: {}\n", .{err}); return 1; @@ -78,7 +79,7 @@ pub fn main() !u8 { defer app_config.deinit(); // Load existing Atom feed to get current releases - var existing_releases = loadExistingReleases(allocator) catch ArrayList(Release).init(allocator); + var existing_releases = loadExistingReleases(allocator, output_file) catch ArrayList(Release).init(allocator); defer { for (existing_releases.items) |release| { release.deinit(allocator); @@ -173,12 +174,10 @@ pub fn main() !u8 { const atom_content = try atom.generateFeed(allocator, all_releases.items); defer allocator.free(atom_content); - // Write Atom feed to file - const atom_file = std.fs.cwd().createFile("releases.xml", .{}) catch |err| { - print("Error creating Atom feed file: {}\n", .{err}); - return; - }; - defer atom_file.close(); + // Write to output file + const file = try std.fs.cwd().createFile(output_file, .{}); + defer file.close(); + try file.writeAll(atom_content); // Log to stderr for user feedback std.debug.print("Found {} new releases\n", .{new_releases.items.len}); @@ -235,10 +234,10 @@ test "Atom feed has correct structure" { try std.testing.expect(std.mem.indexOf(u8, atom_content, "Test release") != null); try std.testing.expect(std.mem.indexOf(u8, atom_content, "") != null); } -fn loadExistingReleases(allocator: Allocator) !ArrayList(Release) { +fn loadExistingReleases(allocator: Allocator, filename: []const u8) !ArrayList(Release) { var releases = ArrayList(Release).init(allocator); - const file = std.fs.cwd().openFile("releases.xml", .{}) catch |err| switch (err) { + const file = std.fs.cwd().openFile(filename, .{}) catch |err| switch (err) { error.FileNotFound => return releases, // No existing file, return empty list else => return err, };