aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorCurtis.Bezault <curtbezault@gmail.com>2019-07-17 14:27:18 -0700
committerCurtis.Bezault <curtbezault@gmail.com>2019-07-17 14:27:18 -0700
commit58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082 (patch)
tree12d4a50f99b3c7446018328bb01510b23c230bdb /toolsrc/src
parentf0f615532f9aa03f1518f03009cff5c716e9b1fd (diff)
downloadvcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.tar.gz
vcpkg-58958eb0ea47c6c423fe78f2cd6fd1e31cbcb082.zip
sourceparagraph changes
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/sourceparagraph.cpp32
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)