aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-11-03 15:43:09 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-11-03 17:32:00 -0700
commit90876a3bfef586a20e475d5ef812bac843e7a1a8 (patch)
tree236c8dafcf64d2ed84377520c73abcffa0fc1032
parent5b60e134665cdb33bd1f01f17e61c5b9ba4ad137 (diff)
downloadvcpkg-90876a3bfef586a20e475d5ef812bac843e7a1a8.tar.gz
vcpkg-90876a3bfef586a20e475d5ef812bac843e7a1a8.zip
SourceParagraph checks fields at construction time
-rw-r--r--toolsrc/include/SourceParagraph.h1
-rw-r--r--toolsrc/src/SourceParagraph.cpp16
-rw-r--r--toolsrc/src/commands_installation.cpp14
3 files changed, 15 insertions, 16 deletions
diff --git a/toolsrc/include/SourceParagraph.h b/toolsrc/include/SourceParagraph.h
index 6aae81872..9c9439ea7 100644
--- a/toolsrc/include/SourceParagraph.h
+++ b/toolsrc/include/SourceParagraph.h
@@ -18,6 +18,5 @@ namespace vcpkg
std::string description;
std::string maintainer;
std::vector<std::string> depends;
- std::unordered_map<std::string, std::string> unparsed_fields;
};
}
diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp
index 34d2a8170..1fa50e233 100644
--- a/toolsrc/src/SourceParagraph.cpp
+++ b/toolsrc/src/SourceParagraph.cpp
@@ -1,5 +1,7 @@
#include "SourceParagraph.h"
#include "vcpkglib_helpers.h"
+#include "vcpkg_System.h"
+#include "vcpkg_Maps.h"
namespace vcpkg
{
@@ -45,6 +47,18 @@ namespace vcpkg
std::string deps = remove_optional_field(&fields, SourceParagraphOptionalField::BUILD_DEPENDS);
this->depends = parse_depends(deps);
- this->unparsed_fields = std::move(fields);
+ if (!fields.empty())
+ {
+ const std::vector<std::string> remaining_fields = Maps::extract_keys(fields);
+ const std::vector<std::string>& valid_fields = get_list_of_valid_fields();
+
+ const std::string remaining_fields_as_string = Strings::join(remaining_fields, "\n ");
+ const std::string valid_fields_as_string = Strings::join(valid_fields, "\n ");
+
+ System::println(System::color::error, "Error: There are invalid fields in the Source Paragraph of %s", this->name);
+ System::println("The following fields were not expected:\n\n %s\n\n", remaining_fields_as_string);
+ System::println("This is the list of valid fields (case-sensitive): \n\n %s\n", valid_fields_as_string);
+ exit(EXIT_FAILURE);
+ }
}
}
diff --git a/toolsrc/src/commands_installation.cpp b/toolsrc/src/commands_installation.cpp
index 22309cabf..022b87139 100644
--- a/toolsrc/src/commands_installation.cpp
+++ b/toolsrc/src/commands_installation.cpp
@@ -25,20 +25,6 @@ namespace vcpkg
Checks::check_exit(pghs.size() == 1, "Error: invalid control file");
SourceParagraph source_paragraph(pghs[0]);
- if (!source_paragraph.unparsed_fields.empty())
- {
- const std::vector<std::string> remaining_keys = Maps::extract_keys(source_paragraph.unparsed_fields);
- const std::vector<std::string>& valid_entries = SourceParagraph::get_list_of_valid_fields();
-
- const std::string remaining_keys_as_string = Strings::join(remaining_keys, "\n ");
- const std::string valid_keys_as_string = Strings::join(valid_entries, "\n ");
-
- System::println(System::color::error, "Error: There are invalid fields in port file %s", port_dir.generic_string());
- System::println("The following fields were not expected in the port file:\n\n %s\n\n", remaining_keys_as_string);
- System::println("This is the list of valid fields (case-sensitive): \n\n %s\n", valid_keys_as_string);
- exit(EXIT_FAILURE);
- }
-
const fs::path ports_cmake_script_path = paths.ports_cmake;
auto&& target_triplet = spec.target_triplet();
const std::wstring command = Strings::wformat(LR"("%%VS140COMNTOOLS%%..\..\VC\vcvarsall.bat" %s && cmake -DCMD=BUILD -DPORT=%s -DTARGET_TRIPLET=%s "-DCURRENT_PORT_DIR=%s/." -P "%s")",