From 03f49b74168311e5c35a9de45c628c60e5d7a05a Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Thu, 22 May 2025 14:30:52 +1000 Subject: [PATCH] fix: use file name for output when generated file name is empty --- codegen/src/main.zig | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/codegen/src/main.zig b/codegen/src/main.zig index 3a81978..4a2e6ad 100644 --- a/codegen/src/main.zig +++ b/codegen/src/main.zig @@ -192,27 +192,21 @@ fn processFile(file_name: []const u8, output_dir: std.fs.Dir, manifest: anytype) _ = try writer.write("\n"); _ = try writer.write("const serializeMap = json.serializeMap;\n"); _ = try writer.write("\n"); + if (verbose) std.log.info("Processing file: {s}", .{file_name}); + const service_names = generateServicesForFilePath(allocator, ";", file_name, writer) catch |err| { std.log.err("Error processing file: {s}", .{file_name}); return err; }; - defer { - for (service_names) |name| allocator.free(name); - allocator.free(service_names); - } - var output_file_name = try std.fmt.allocPrint(allocator, "", .{}); - defer allocator.free(output_file_name); - for (service_names) |name| { - const seperator = if (output_file_name.len > 0) "-" else ""; - const new_output_file_name = try std.fmt.allocPrint( - allocator, - "{s}{s}{s}", - .{ output_file_name, seperator, name }, - ); - allocator.free(output_file_name); - output_file_name = new_output_file_name; + + var output_file_name: []const u8 = try std.mem.join(allocator, "-", service_names); + + if (output_file_name.len == 0) { + const ext = std.fs.path.extension(file_name); + output_file_name = file_name[0 .. file_name.len - ext.len]; } + { // append .zig on to the file name const new_output_file_name = try std.fmt.allocPrint(