mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-29 03:34:26 +08:00
SourceParagraph checks fields at construction time
This commit is contained in:
parent
5b60e13466
commit
90876a3bfe
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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")",
|
||||
|
Loading…
x
Reference in New Issue
Block a user