aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/Fail.zig
blob: 9236c2ac7b6176ab9a7fc15f0afee83fa2107c42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//! Fail the build with a given message.
const std = @import("std");
const Step = std.Build.Step;
const Fail = @This();

step: Step,
error_msg: []const u8,

pub const base_id: Step.Id = .fail;

pub fn create(owner: *std.Build, error_msg: []const u8) *Fail {
    const fail = owner.allocator.create(Fail) catch @panic("OOM");

    fail.* = .{
        .step = Step.init(.{
            .id = base_id,
            .name = "fail",
            .owner = owner,
            .makeFn = make,
        }),
        .error_msg = owner.dupe(error_msg),
    };

    return fail;
}

fn make(step: *Step, options: Step.MakeOptions) !void {
    _ = options; // No progress to report.

    const fail: *Fail = @fieldParentPtr("step", step);

    try step.result_error_msgs.append(step.owner.allocator, fail.error_msg);

    return error.MakeFailed;
}