feat: run zig fmt on generated models
This commit is contained in:
parent
87fc872f7d
commit
522ab72296
1 changed files with 16 additions and 3 deletions
|
@ -80,6 +80,7 @@ pub fn main() anyerror!void {
|
||||||
if (args.len == 0)
|
if (args.len == 0)
|
||||||
_ = try generateServices(allocator, ";", std.io.getStdIn(), stdout);
|
_ = try generateServices(allocator, ";", std.io.getStdIn(), stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
const OutputManifest = struct {
|
const OutputManifest = struct {
|
||||||
model_dir_hash_digest: [Hasher.hex_multihash_len]u8,
|
model_dir_hash_digest: [Hasher.hex_multihash_len]u8,
|
||||||
output_dir_hash_digest: [Hasher.hex_multihash_len]u8,
|
output_dir_hash_digest: [Hasher.hex_multihash_len]u8,
|
||||||
|
@ -168,12 +169,13 @@ fn calculateDigests(models_dir: std.fs.Dir, output_dir: std.fs.Dir, thread_pool:
|
||||||
fn processFile(file_name: []const u8, output_dir: std.fs.Dir, manifest: anytype) !void {
|
fn processFile(file_name: []const u8, output_dir: std.fs.Dir, manifest: anytype) !void {
|
||||||
// The fixed buffer for output will be 2MB, which is twice as large as the size of the EC2
|
// The fixed buffer for output will be 2MB, which is twice as large as the size of the EC2
|
||||||
// (the largest) model. We'll then flush all this at one go at the end.
|
// (the largest) model. We'll then flush all this at one go at the end.
|
||||||
var buffer = [_]u8{0} ** (1024 * 1024 * 2);
|
var buffer = std.mem.zeroes([1024 * 1024 * 2]u8);
|
||||||
var output_stream = std.io.FixedBufferStream([]u8){
|
var output_stream = std.io.FixedBufferStream([]u8){
|
||||||
.buffer = &buffer,
|
.buffer = &buffer,
|
||||||
.pos = 0,
|
.pos = 0,
|
||||||
};
|
};
|
||||||
var writer = output_stream.writer();
|
var counting_writer = std.io.countingWriter(output_stream.writer());
|
||||||
|
var writer = counting_writer.writer();
|
||||||
|
|
||||||
// It's probably best to create our own allocator here so we can deint at the end and
|
// It's probably best to create our own allocator here so we can deint at the end and
|
||||||
// toss all allocations related to the services in this file
|
// toss all allocations related to the services in this file
|
||||||
|
@ -221,15 +223,26 @@ fn processFile(file_name: []const u8, output_dir: std.fs.Dir, manifest: anytype)
|
||||||
allocator.free(output_file_name);
|
allocator.free(output_file_name);
|
||||||
output_file_name = new_output_file_name;
|
output_file_name = new_output_file_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const formatted = try zigFmt(allocator, @ptrCast(buffer[0..counting_writer.bytes_written]));
|
||||||
|
|
||||||
// Dump our buffer out to disk
|
// Dump our buffer out to disk
|
||||||
var file = try output_dir.createFile(output_file_name, .{ .truncate = true });
|
var file = try output_dir.createFile(output_file_name, .{ .truncate = true });
|
||||||
defer file.close();
|
defer file.close();
|
||||||
try file.writeAll(output_stream.getWritten());
|
try file.writeAll(formatted);
|
||||||
|
|
||||||
for (service_names) |name| {
|
for (service_names) |name| {
|
||||||
try manifest.print("pub const {s} = @import(\"{s}\");\n", .{ name, std.fs.path.basename(output_file_name) });
|
try manifest.print("pub const {s} = @import(\"{s}\");\n", .{ name, std.fs.path.basename(output_file_name) });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn zigFmt(allocator: std.mem.Allocator, buffer: [:0]const u8) ![]const u8 {
|
||||||
|
var tree = try std.zig.Ast.parse(allocator, buffer, .zig);
|
||||||
|
defer tree.deinit(allocator);
|
||||||
|
|
||||||
|
return try tree.render(allocator);
|
||||||
|
}
|
||||||
|
|
||||||
fn generateServicesForFilePath(
|
fn generateServicesForFilePath(
|
||||||
allocator: std.mem.Allocator,
|
allocator: std.mem.Allocator,
|
||||||
comptime terminator: []const u8,
|
comptime terminator: []const u8,
|
||||||
|
|
Loading…
Add table
Reference in a new issue