mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
Merge pull request #7640 from daurnimator/use-markInvalidUserInput
Don't process.exit() on invalid option use .markInvalidUserInput
This commit is contained in:
commit
1cef0be01b
@ -471,32 +471,32 @@ pub const Builder = struct {
|
||||
} else if (mem.eql(u8, s, "false")) {
|
||||
return false;
|
||||
} else {
|
||||
warn("Expected -D{} to be a boolean, but received '{}'\n", .{ name, s });
|
||||
warn("Expected -D{} to be a boolean, but received '{}'\n\n", .{ name, s });
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
}
|
||||
},
|
||||
.List => {
|
||||
warn("Expected -D{} to be a boolean, but received a list.\n", .{name});
|
||||
warn("Expected -D{} to be a boolean, but received a list.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
},
|
||||
.Int => switch (entry.value.value) {
|
||||
.Flag => {
|
||||
warn("Expected -D{} to be an integer, but received a boolean.\n", .{name});
|
||||
warn("Expected -D{} to be an integer, but received a boolean.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
.Scalar => |s| {
|
||||
const n = std.fmt.parseInt(T, s, 10) catch |err| switch (err) {
|
||||
error.Overflow => {
|
||||
warn("-D{} value {} cannot fit into type {}.\n", .{ name, s, @typeName(T) });
|
||||
warn("-D{} value {} cannot fit into type {}.\n\n", .{ name, s, @typeName(T) });
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
else => {
|
||||
warn("Expected -D{} to be an integer of type {}.\n", .{ name, @typeName(T) });
|
||||
warn("Expected -D{} to be an integer of type {}.\n\n", .{ name, @typeName(T) });
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
@ -504,34 +504,34 @@ pub const Builder = struct {
|
||||
return n;
|
||||
},
|
||||
.List => {
|
||||
warn("Expected -D{} to be an integer, but received a list.\n", .{name});
|
||||
warn("Expected -D{} to be an integer, but received a list.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
},
|
||||
.Float => switch (entry.value.value) {
|
||||
.Flag => {
|
||||
warn("Expected -D{} to be a float, but received a boolean.\n", .{name});
|
||||
warn("Expected -D{} to be a float, but received a boolean.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
.Scalar => |s| {
|
||||
const n = std.fmt.parseFloat(T, s) catch |err| {
|
||||
warn("Expected -D{} to be a float of type {}.\n", .{ name, @typeName(T) });
|
||||
warn("Expected -D{} to be a float of type {}.\n\n", .{ name, @typeName(T) });
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
};
|
||||
return n;
|
||||
},
|
||||
.List => {
|
||||
warn("Expected -D{} to be a float, but received a list.\n", .{name});
|
||||
warn("Expected -D{} to be a float, but received a list.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
},
|
||||
.Enum => switch (entry.value.value) {
|
||||
.Flag => {
|
||||
warn("Expected -D{} to be a string, but received a boolean.\n", .{name});
|
||||
warn("Expected -D{} to be a string, but received a boolean.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
@ -539,25 +539,25 @@ pub const Builder = struct {
|
||||
if (std.meta.stringToEnum(T, s)) |enum_lit| {
|
||||
return enum_lit;
|
||||
} else {
|
||||
warn("Expected -D{} to be of type {}.\n", .{ name, @typeName(T) });
|
||||
warn("Expected -D{} to be of type {}.\n\n", .{ name, @typeName(T) });
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
}
|
||||
},
|
||||
.List => {
|
||||
warn("Expected -D{} to be a string, but received a list.\n", .{name});
|
||||
warn("Expected -D{} to be a string, but received a list.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
},
|
||||
.String => switch (entry.value.value) {
|
||||
.Flag => {
|
||||
warn("Expected -D{} to be a string, but received a boolean.\n", .{name});
|
||||
warn("Expected -D{} to be a string, but received a boolean.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
.List => {
|
||||
warn("Expected -D{} to be a string, but received a list.\n", .{name});
|
||||
warn("Expected -D{} to be a string, but received a list.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
@ -565,7 +565,7 @@ pub const Builder = struct {
|
||||
},
|
||||
.List => switch (entry.value.value) {
|
||||
.Flag => {
|
||||
warn("Expected -D{} to be a list, but received a boolean.\n", .{name});
|
||||
warn("Expected -D{} to be a list, but received a boolean.\n\n", .{name});
|
||||
self.markInvalidUserInput();
|
||||
return null;
|
||||
},
|
||||
@ -615,7 +615,7 @@ pub const Builder = struct {
|
||||
else if (!release_fast and !release_safe and !release_small)
|
||||
builtin.Mode.Debug
|
||||
else x: {
|
||||
warn("Multiple release modes (of -Drelease-safe, -Drelease-fast and -Drelease-small)", .{});
|
||||
warn("Multiple release modes (of -Drelease-safe, -Drelease-fast and -Drelease-small)\n\n", .{});
|
||||
self.markInvalidUserInput();
|
||||
break :x builtin.Mode.Debug;
|
||||
};
|
||||
@ -646,17 +646,19 @@ pub const Builder = struct {
|
||||
.diagnostics = &diags,
|
||||
}) catch |err| switch (err) {
|
||||
error.UnknownCpuModel => {
|
||||
std.debug.warn("Unknown CPU: '{}'\nAvailable CPUs for architecture '{}':\n", .{
|
||||
warn("Unknown CPU: '{}'\nAvailable CPUs for architecture '{}':\n", .{
|
||||
diags.cpu_name.?,
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allCpuModels()) |cpu| {
|
||||
std.debug.warn(" {}\n", .{cpu.name});
|
||||
warn(" {}\n", .{cpu.name});
|
||||
}
|
||||
process.exit(1);
|
||||
warn("\n", .{});
|
||||
self.markInvalidUserInput();
|
||||
return args.default_target;
|
||||
},
|
||||
error.UnknownCpuFeature => {
|
||||
std.debug.warn(
|
||||
warn(
|
||||
\\Unknown CPU feature: '{}'
|
||||
\\Available CPU features for architecture '{}':
|
||||
\\
|
||||
@ -665,24 +667,29 @@ pub const Builder = struct {
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allFeaturesList()) |feature| {
|
||||
std.debug.warn(" {}: {}\n", .{ feature.name, feature.description });
|
||||
warn(" {}: {}\n", .{ feature.name, feature.description });
|
||||
}
|
||||
process.exit(1);
|
||||
warn("\n", .{});
|
||||
self.markInvalidUserInput();
|
||||
return args.default_target;
|
||||
},
|
||||
error.UnknownOperatingSystem => {
|
||||
std.debug.warn(
|
||||
warn(
|
||||
\\Unknown OS: '{}'
|
||||
\\Available operating systems:
|
||||
\\
|
||||
, .{diags.os_name});
|
||||
inline for (std.meta.fields(std.Target.Os.Tag)) |field| {
|
||||
std.debug.warn(" {}\n", .{field.name});
|
||||
warn(" {}\n", .{field.name});
|
||||
}
|
||||
process.exit(1);
|
||||
warn("\n", .{});
|
||||
self.markInvalidUserInput();
|
||||
return args.default_target;
|
||||
},
|
||||
else => |e| {
|
||||
std.debug.warn("Unable to parse target '{}': {}\n", .{ triple, @errorName(e) });
|
||||
process.exit(1);
|
||||
warn("Unable to parse target '{}': {}\n\n", .{ triple, @errorName(e) });
|
||||
self.markInvalidUserInput();
|
||||
return args.default_target;
|
||||
},
|
||||
};
|
||||
|
||||
@ -696,16 +703,16 @@ pub const Builder = struct {
|
||||
break :whitelist_check;
|
||||
}
|
||||
}
|
||||
std.debug.warn("Chosen target '{}' does not match one of the supported targets:\n", .{
|
||||
warn("Chosen target '{}' does not match one of the supported targets:\n", .{
|
||||
selected_canonicalized_triple,
|
||||
});
|
||||
for (list) |t| {
|
||||
const t_triple = t.zigTriple(self.allocator) catch unreachable;
|
||||
std.debug.warn(" {}\n", .{t_triple});
|
||||
warn(" {}\n", .{t_triple});
|
||||
}
|
||||
// TODO instead of process exit, return error and have a zig build flag implemented by
|
||||
// the build runner that turns process exits into error return traces
|
||||
process.exit(1);
|
||||
warn("\n", .{});
|
||||
self.markInvalidUserInput();
|
||||
return args.default_target;
|
||||
}
|
||||
|
||||
return selected_target;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user