| ... | @@ -105,6 +105,7 @@ pub const Builder = struct { | ... | @@ -105,6 +105,7 @@ pub const Builder = struct { |
| 105 | Bool, | 105 | Bool, |
| 106 | Int, | 106 | Int, |
| 107 | Float, | 107 | Float, |
| | 108 | Enum, |
| 108 | String, | 109 | String, |
| 109 | List, | 110 | List, |
| 110 | }; | 111 | }; |
| ... | @@ -450,6 +451,27 @@ pub const Builder = struct { | ... | @@ -450,6 +451,27 @@ pub const Builder = struct { |
| 450 | }, | 451 | }, |
| 451 | TypeId.Int => panic("TODO integer options to build script", .{}), | 452 | TypeId.Int => panic("TODO integer options to build script", .{}), |
| 452 | TypeId.Float => panic("TODO float options to build script", .{}), | 453 | 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 | }, |
| 453 | TypeId.String => switch (entry.value.value) { | 475 | TypeId.String => switch (entry.value.value) { |
| 454 | UserValue.Flag => { | 476 | UserValue.Flag => { |
| 455 | warn("Expected -D{} to be a string, but received a boolean.\n", .{name}); | 477 | warn("Expected -D{} to be a string, but received a boolean.\n", .{name}); |
| ... | @@ -681,6 +703,7 @@ pub const Builder = struct { | ... | @@ -681,6 +703,7 @@ pub const Builder = struct { |
| 681 | .Int => .Int, | 703 | .Int => .Int, |
| 682 | .Float => .Float, | 704 | .Float => .Float, |
| 683 | .Bool => .Bool, | 705 | .Bool => .Bool, |
| | 706 | .Enum => .Enum, |
| 684 | else => switch (T) { | 707 | else => switch (T) { |
| 685 | []const u8 => .String, | 708 | []const u8 => .String, |
| 686 | []const []const u8 => .List, | 709 | []const []const u8 => .List, |
| ... | @@ -698,6 +721,7 @@ pub const Builder = struct { | ... | @@ -698,6 +721,7 @@ pub const Builder = struct { |
| 698 | .Bool => "bool", | 721 | .Bool => "bool", |
| 699 | .Int => "int", | 722 | .Int => "int", |
| 700 | .Float => "float", | 723 | .Float => "float", |
| | 724 | .Enum => "enum", |
| 701 | .String => "string", | 725 | .String => "string", |
| 702 | .List => "list", | 726 | .List => "list", |
| 703 | }; | 727 | }; |