diff options
| author | Curtis.Bezault <curtbezault@gmail.com> | 2019-07-17 14:27:18 -0700 |
|---|---|---|
| committer | Curtis.Bezault <curtbezault@gmail.com> | 2019-07-17 14:27:18 -0700 |
| commit | 58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082 (patch) | |
| tree | 12d4a50f99b3c7446018328bb01510b23c230bdb /toolsrc/src | |
| parent | f0f615532f9aa03f1518f03009cff5c716e9b1fd (diff) | |
| download | vcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.tar.gz vcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.zip | |
sourceparagraph changes
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/sourceparagraph.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg/sourceparagraph.cpp b/toolsrc/src/vcpkg/sourceparagraph.cpp index 1a52bd05f..26a7ab118 100644 --- a/toolsrc/src/vcpkg/sourceparagraph.cpp +++ b/toolsrc/src/vcpkg/sourceparagraph.cpp @@ -25,6 +25,7 @@ namespace vcpkg static const std::string SUPPORTS = "Supports"; static const std::string VERSION = "Version"; static const std::string HOMEPAGE = "Homepage"; + static const std::string TYPE = "Type"; } static Span<const std::string> get_list_of_valid_fields() @@ -36,6 +37,7 @@ namespace vcpkg SourceParagraphFields::MAINTAINER, SourceParagraphFields::BUILD_DEPENDS, SourceParagraphFields::HOMEPAGE, + SourceParagraphFields::TYPE, }; return valid_fields; @@ -98,6 +100,35 @@ namespace vcpkg } } + static SourceParagraph::TYPE type_from_string(const std::string& in) + { + if (Strings::equals(in, "port") || Strings::equals(in, "")) + { + return SourceParagraph::PORT; + } + + if (Strings::equals(in, "sys-tool")) + { + return SourceParagraph::SYS_TOOL; + } + + System::print2( + in, " is not a valid control file type. Valid types are:", + "\n port\n sys-tool"); + + Checks::exit_fail(VCPKG_LINE_INFO); + } + + static std::string string_from_type(const SourceParagraph::TYPE& in) + { + switch (in) + { + case SourceParagraph::PORT : return "port"; + case SourceParagraph::SYS_TOOL : return "sys-tool"; + default : Checks::exit_with_message(VCPKG_LINE_INFO, "Invalid CONTROL_TYPE value."); + } + } + static ParseExpected<SourceParagraph> parse_source_paragraph(RawParagraph&& fields) { ParagraphParser parser(std::move(fields)); @@ -114,6 +145,7 @@ namespace vcpkg parse_comma_list(parser.optional_field(SourceParagraphFields::BUILD_DEPENDS))); spgh->supports = parse_comma_list(parser.optional_field(SourceParagraphFields::SUPPORTS)); spgh->default_features = parse_comma_list(parser.optional_field(SourceParagraphFields::DEFAULTFEATURES)); + spgh->type = type_from_string(parser.optional_field(SourceParagraphFields::TYPE)); auto err = parser.error_info(spgh->name); if (err) |
