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 | |
| parent | f0f615532f9aa03f1518f03009cff5c716e9b1fd (diff) | |
| download | vcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.tar.gz vcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.zip | |
sourceparagraph changes
| -rw-r--r-- | toolsrc/include/vcpkg/sourceparagraph.h | 10 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/sourceparagraph.cpp | 32 |
2 files changed, 42 insertions, 0 deletions
diff --git a/toolsrc/include/vcpkg/sourceparagraph.h b/toolsrc/include/vcpkg/sourceparagraph.h index 9fbd83475..9a1c2c843 100644 --- a/toolsrc/include/vcpkg/sourceparagraph.h +++ b/toolsrc/include/vcpkg/sourceparagraph.h @@ -46,6 +46,12 @@ namespace vcpkg /// </summary> struct SourceParagraph { + enum TYPE : unsigned + { + PORT = 0, + SYS_TOOL, + }; + std::string name; std::string version; std::string description; @@ -54,6 +60,10 @@ namespace vcpkg std::vector<std::string> supports; std::vector<Dependency> depends; std::vector<std::string> default_features; + TYPE type; + + static TYPE type_from_string(const std::string& in); + static std::string string_from_type(const TYPE& in); }; /// <summary> 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) |
