mirror of
https://codeberg.org/andyscott/ziglings.git
synced 2024-11-09 11:40:46 -05:00
build: make the logo a build step
Currently, the logo is always printed when the build script is executed, resulting in the logo being printed twice with `zig build -h` and `zig build -l`. Make the logo a build step, so that the logo is printed to stderr only when necessary. Closes #211
This commit is contained in:
parent
b75a76d072
commit
dd15cb94fd
1 changed files with 33 additions and 1 deletions
34
build.zig
34
build.zig
|
@ -572,7 +572,9 @@ pub fn build(b: *Builder) !void {
|
|||
\\
|
||||
;
|
||||
const header_step = b.step("info", logo);
|
||||
print("{s}\n", .{logo});
|
||||
|
||||
const logo_step = PrintStep.create(b, logo, std.io.getStdErr());
|
||||
logo_step.step.dependOn(header_step);
|
||||
|
||||
const verify_all = b.step("ziglings", "Check all ziglings");
|
||||
verify_all.dependOn(header_step);
|
||||
|
@ -804,3 +806,33 @@ const ZiglingStep = struct {
|
|||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Print a message to a file.
|
||||
const PrintStep = struct {
|
||||
step: Step,
|
||||
message: []const u8,
|
||||
file: std.fs.File,
|
||||
|
||||
pub fn create(owner: *std.Build, message: []const u8, file: std.fs.File) *PrintStep {
|
||||
const self = owner.allocator.create(PrintStep) catch @panic("OOM");
|
||||
self.* = .{
|
||||
.step = Step.init(.{
|
||||
.id = .custom,
|
||||
.name = "Print",
|
||||
.owner = owner,
|
||||
.makeFn = make,
|
||||
}),
|
||||
.message = message,
|
||||
.file = file,
|
||||
};
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
fn make(step: *Step, prog_node: *std.Progress.Node) !void {
|
||||
_ = prog_node;
|
||||
const p = @fieldParentPtr(PrintStep, "step", step);
|
||||
|
||||
try p.file.writeAll(p.message);
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue