From 079a027b1e81becd4ba448362579f625dd7bcca4 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Wed, 2 Nov 2016 19:39:45 -0700 Subject: parse_depends() now handles empty case internally --- toolsrc/src/SourceParagraph.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'toolsrc/src/SourceParagraph.cpp') diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp index 374121ae9..75c8ebfef 100644 --- a/toolsrc/src/SourceParagraph.cpp +++ b/toolsrc/src/SourceParagraph.cpp @@ -12,9 +12,5 @@ vcpkg::SourceParagraph::SourceParagraph(const std::unordered_mapdepends.clear(); - this->depends = parse_depends(deps); - }; + this->depends = parse_depends(deps); } -- cgit v1.2.3 From 4665b16ab3556235ddcbdac160df261ee87694e4 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Wed, 2 Nov 2016 20:26:52 -0700 Subject: Add checks for fields in CONTROL file. Resolves #228 --- toolsrc/src/SourceParagraph.cpp | 54 +++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 10 deletions(-) (limited to 'toolsrc/src/SourceParagraph.cpp') diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp index 75c8ebfef..c870bde21 100644 --- a/toolsrc/src/SourceParagraph.cpp +++ b/toolsrc/src/SourceParagraph.cpp @@ -1,16 +1,50 @@ #include "SourceParagraph.h" #include "vcpkglib_helpers.h" -using namespace vcpkg::details; +namespace vcpkg +{ + // + namespace SourceParagraphRequiredField + { + static const std::string SOURCE = "Source"; + static const std::string VERSION = "Version"; + } -vcpkg::SourceParagraph::SourceParagraph() = default; + namespace SourceParagraphOptionalEntry + { + static const std::string DESCRIPTION = "Description"; + static const std::string MAINTAINER = "Maintainer"; + static const std::string BUILD_DEPENDS = "Build-Depends"; + } -vcpkg::SourceParagraph::SourceParagraph(const std::unordered_map& fields): - name(required_field(fields, "Source")), - version(required_field(fields, "Version")), - description(optional_field(fields, "Description")), - maintainer(optional_field(fields, "Maintainer")) -{ - std::string deps = optional_field(fields, "Build-Depends"); - this->depends = parse_depends(deps); + const std::vector& SourceParagraph::get_list_of_valid_entries() + { + static const std::vector valid_enties = + { + SourceParagraphRequiredField::SOURCE, + SourceParagraphRequiredField::VERSION, + + SourceParagraphOptionalEntry::DESCRIPTION, + SourceParagraphOptionalEntry::MAINTAINER, + SourceParagraphOptionalEntry::BUILD_DEPENDS + }; + + return valid_enties; + } + + SourceParagraph::SourceParagraph() = default; + + SourceParagraph::SourceParagraph(std::unordered_map fields) + { + using namespace vcpkg::details; + this->name = remove_required_field(&fields, SourceParagraphRequiredField::SOURCE); + this->version = remove_required_field(&fields, SourceParagraphRequiredField::VERSION); + this->description = remove_optional_field(&fields, SourceParagraphOptionalEntry::DESCRIPTION); + this->maintainer = remove_optional_field(&fields, SourceParagraphOptionalEntry::MAINTAINER); + + std::string deps = remove_optional_field(&fields, SourceParagraphOptionalEntry::BUILD_DEPENDS); + this->depends = parse_depends(deps); + + this->unparsed_fields = std::move(fields); + } } -- cgit v1.2.3 From 5b60e134665cdb33bd1f01f17e61c5b9ba4ad137 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 3 Nov 2016 14:34:52 -0700 Subject: [SourceParagraph] Consistency rename --- toolsrc/src/SourceParagraph.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'toolsrc/src/SourceParagraph.cpp') diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp index c870bde21..34d2a8170 100644 --- a/toolsrc/src/SourceParagraph.cpp +++ b/toolsrc/src/SourceParagraph.cpp @@ -10,26 +10,26 @@ namespace vcpkg static const std::string VERSION = "Version"; } - namespace SourceParagraphOptionalEntry + namespace SourceParagraphOptionalField { static const std::string DESCRIPTION = "Description"; static const std::string MAINTAINER = "Maintainer"; static const std::string BUILD_DEPENDS = "Build-Depends"; } - const std::vector& SourceParagraph::get_list_of_valid_entries() + const std::vector& SourceParagraph::get_list_of_valid_fields() { - static const std::vector valid_enties = + static const std::vector valid_fields = { SourceParagraphRequiredField::SOURCE, SourceParagraphRequiredField::VERSION, - SourceParagraphOptionalEntry::DESCRIPTION, - SourceParagraphOptionalEntry::MAINTAINER, - SourceParagraphOptionalEntry::BUILD_DEPENDS + SourceParagraphOptionalField::DESCRIPTION, + SourceParagraphOptionalField::MAINTAINER, + SourceParagraphOptionalField::BUILD_DEPENDS }; - return valid_enties; + return valid_fields; } SourceParagraph::SourceParagraph() = default; @@ -39,10 +39,10 @@ namespace vcpkg using namespace vcpkg::details; this->name = remove_required_field(&fields, SourceParagraphRequiredField::SOURCE); this->version = remove_required_field(&fields, SourceParagraphRequiredField::VERSION); - this->description = remove_optional_field(&fields, SourceParagraphOptionalEntry::DESCRIPTION); - this->maintainer = remove_optional_field(&fields, SourceParagraphOptionalEntry::MAINTAINER); + this->description = remove_optional_field(&fields, SourceParagraphOptionalField::DESCRIPTION); + this->maintainer = remove_optional_field(&fields, SourceParagraphOptionalField::MAINTAINER); - std::string deps = remove_optional_field(&fields, SourceParagraphOptionalEntry::BUILD_DEPENDS); + std::string deps = remove_optional_field(&fields, SourceParagraphOptionalField::BUILD_DEPENDS); this->depends = parse_depends(deps); this->unparsed_fields = std::move(fields); -- cgit v1.2.3 From 90876a3bfef586a20e475d5ef812bac843e7a1a8 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 3 Nov 2016 15:43:09 -0700 Subject: SourceParagraph checks fields at construction time --- toolsrc/src/SourceParagraph.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'toolsrc/src/SourceParagraph.cpp') 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 remaining_fields = Maps::extract_keys(fields); + const std::vector& 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); + } } } -- cgit v1.2.3 From 99b3c491729187d87ba9fd1cc78bc9b63a046616 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 3 Nov 2016 15:53:15 -0700 Subject: [SourceParagraph] Remove using namespace; --- toolsrc/src/SourceParagraph.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'toolsrc/src/SourceParagraph.cpp') diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp index 1fa50e233..f46a9c2af 100644 --- a/toolsrc/src/SourceParagraph.cpp +++ b/toolsrc/src/SourceParagraph.cpp @@ -38,14 +38,13 @@ namespace vcpkg SourceParagraph::SourceParagraph(std::unordered_map fields) { - using namespace vcpkg::details; - this->name = remove_required_field(&fields, SourceParagraphRequiredField::SOURCE); - this->version = remove_required_field(&fields, SourceParagraphRequiredField::VERSION); - this->description = remove_optional_field(&fields, SourceParagraphOptionalField::DESCRIPTION); - this->maintainer = remove_optional_field(&fields, SourceParagraphOptionalField::MAINTAINER); + this->name = details::remove_required_field(&fields, SourceParagraphRequiredField::SOURCE); + this->version = details::remove_required_field(&fields, SourceParagraphRequiredField::VERSION); + this->description = details::remove_optional_field(&fields, SourceParagraphOptionalField::DESCRIPTION); + this->maintainer = details::remove_optional_field(&fields, SourceParagraphOptionalField::MAINTAINER); - std::string deps = remove_optional_field(&fields, SourceParagraphOptionalField::BUILD_DEPENDS); - this->depends = parse_depends(deps); + std::string deps = details::remove_optional_field(&fields, SourceParagraphOptionalField::BUILD_DEPENDS); + this->depends = details::parse_depends(deps); if (!fields.empty()) { -- cgit v1.2.3 From 11c9a523f7cd8cc324606c543311de1edcaee6cb Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 3 Nov 2016 18:52:44 -0700 Subject: [SourceParagraph] Make function static --- toolsrc/src/SourceParagraph.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolsrc/src/SourceParagraph.cpp') diff --git a/toolsrc/src/SourceParagraph.cpp b/toolsrc/src/SourceParagraph.cpp index f46a9c2af..6f25dbded 100644 --- a/toolsrc/src/SourceParagraph.cpp +++ b/toolsrc/src/SourceParagraph.cpp @@ -19,7 +19,7 @@ namespace vcpkg static const std::string BUILD_DEPENDS = "Build-Depends"; } - const std::vector& SourceParagraph::get_list_of_valid_fields() + static const std::vector& get_list_of_valid_fields() { static const std::vector valid_fields = { -- cgit v1.2.3