authorgravatar for ed.dean515@gmail.comDrDeano <ed.dean515@gmail.com> 2020-05-16 15:36:18+01:00
committergravatar for ed.dean515@gmail.comDrDeano <ed.dean515@gmail.com> 2020-05-16 15:36:18+01:00
log72b72faa0b055f08a01d19ae26180dd4df6fe383
treed5cc375852e61bc4cd2c79fcdd362d3040047bd3
parentb2cb8beed944aa74fba99fd1884dbb625987c9a0
signature Commit is signed but in an unrecognized format.

Add Enum Option


1 files changed, 24 insertions(+), 0 deletions(-)

lib/std/build.zig+24
......@@ -105,6 +105,7 @@ pub const Builder = struct {
105105 Bool,
106106 Int,
107107 Float,
108 Enum,
108109 String,
109110 List,
110111 };
......@@ -450,6 +451,27 @@ pub const Builder = struct {
450451 },
451452 TypeId.Int => panic("TODO integer options to build script", .{}),
452453 TypeId.Float => panic("TODO float options to build script", .{}),
454 TypeId.Enum => switch (entry.value.value) {
455 UserValue.Flag => {
456 warn("Expected -D{} to be a string, but received a boolean.\n", .{name});
457 self.markInvalidUserInput();
458 return null;
459 },
460 UserValue.Scalar => |s| {
461 if (std.meta.stringToEnum(T, s)) |enum_lit| {
462 return enum_lit;
463 } else {
464 warn("Expected -D{} to be of type {}.\n", .{ name, @typeName(T) });
465 self.markInvalidUserInput();
466 return null;
467 }
468 },
469 UserValue.List => {
470 warn("Expected -D{} to be a string, but received a list.\n", .{name});
471 self.markInvalidUserInput();
472 return null;
473 },
474 },
453475 TypeId.String => switch (entry.value.value) {
454476 UserValue.Flag => {
455477 warn("Expected -D{} to be a string, but received a boolean.\n", .{name});
......@@ -681,6 +703,7 @@ pub const Builder = struct {
681703 .Int => .Int,
682704 .Float => .Float,
683705 .Bool => .Bool,
706 .Enum => .Enum,
684707 else => switch (T) {
685708 []const u8 => .String,
686709 []const []const u8 => .List,
......@@ -698,6 +721,7 @@ pub const Builder = struct {
698721 .Bool => "bool",
699722 .Int => "int",
700723 .Float => "float",
724 .Enum => "enum",
701725 .String => "string",
702726 .List => "list",
703727 };