back to file approach
This commit is contained in:
parent
da13b41cc3
commit
7490ff3bc5
1 changed files with 8 additions and 9 deletions
17
src/main.zig
17
src/main.zig
|
@ -71,6 +71,7 @@ pub fn main() !u8 {
|
||||||
}
|
}
|
||||||
|
|
||||||
const config_path = args[1];
|
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| {
|
var app_config = config.loadConfig(allocator, config_path) catch |err| {
|
||||||
print("Error loading config: {}\n", .{err});
|
print("Error loading config: {}\n", .{err});
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -78,7 +79,7 @@ pub fn main() !u8 {
|
||||||
defer app_config.deinit();
|
defer app_config.deinit();
|
||||||
|
|
||||||
// Load existing Atom feed to get current releases
|
// 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 {
|
defer {
|
||||||
for (existing_releases.items) |release| {
|
for (existing_releases.items) |release| {
|
||||||
release.deinit(allocator);
|
release.deinit(allocator);
|
||||||
|
@ -173,12 +174,10 @@ pub fn main() !u8 {
|
||||||
const atom_content = try atom.generateFeed(allocator, all_releases.items);
|
const atom_content = try atom.generateFeed(allocator, all_releases.items);
|
||||||
defer allocator.free(atom_content);
|
defer allocator.free(atom_content);
|
||||||
|
|
||||||
// Write Atom feed to file
|
// Write to output file
|
||||||
const atom_file = std.fs.cwd().createFile("releases.xml", .{}) catch |err| {
|
const file = try std.fs.cwd().createFile(output_file, .{});
|
||||||
print("Error creating Atom feed file: {}\n", .{err});
|
defer file.close();
|
||||||
return;
|
try file.writeAll(atom_content);
|
||||||
};
|
|
||||||
defer atom_file.close();
|
|
||||||
|
|
||||||
// Log to stderr for user feedback
|
// Log to stderr for user feedback
|
||||||
std.debug.print("Found {} new releases\n", .{new_releases.items.len});
|
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, "<summary>Test release</summary>") != null);
|
try std.testing.expect(std.mem.indexOf(u8, atom_content, "<summary>Test release</summary>") != null);
|
||||||
try std.testing.expect(std.mem.indexOf(u8, atom_content, "<category term=\"github\"/>") != null);
|
try std.testing.expect(std.mem.indexOf(u8, atom_content, "<category term=\"github\"/>") != null);
|
||||||
}
|
}
|
||||||
fn loadExistingReleases(allocator: Allocator) !ArrayList(Release) {
|
fn loadExistingReleases(allocator: Allocator, filename: []const u8) !ArrayList(Release) {
|
||||||
var releases = ArrayList(Release).init(allocator);
|
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
|
error.FileNotFound => return releases, // No existing file, return empty list
|
||||||
else => return err,
|
else => return err,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue