const std = @import("../std.zig"); const log = std.log; const fs = std.fs; const Step = std.Build.Step; const RemoveDirStep = @This(); pub const base_id = .remove_dir; step: Step, builder: *std.Build, dir_path: []const u8, pub fn init(builder: *std.Build, dir_path: []const u8) RemoveDirStep { return RemoveDirStep{ .builder = builder, .step = Step.init(builder.allocator, .{ .id = .remove_dir, .name = builder.fmt("RemoveDir {s}", .{dir_path}), .makeFn = make, }), .dir_path = builder.dupePath(dir_path), }; } fn make(step: *Step, prog_node: *std.Progress.Node) !void { _ = prog_node; const self = @fieldParentPtr(RemoveDirStep, "step", step); const full_path = self.builder.pathFromRoot(self.dir_path); fs.cwd().deleteTree(full_path) catch |err| { log.err("Unable to remove {s}: {s}", .{ full_path, @errorName(err) }); return err; }; }