diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2016-11-03 17:36:47 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2016-11-03 17:36:47 -0700 |
| commit | 95ef1b95e6e2f7933bb40f428514dcf178b201e6 (patch) | |
| tree | 3d544fec80323f3fab480df4e25778fa934933f2 /toolsrc/src/BinaryParagraph.cpp | |
| parent | 99b3c491729187d87ba9fd1cc78bc9b63a046616 (diff) | |
| download | vcpkg-95ef1b95e6e2f7933bb40f428514dcf178b201e6.tar.gz vcpkg-95ef1b95e6e2f7933bb40f428514dcf178b201e6.zip | |
[BinaryParagraph] Refactor implementation
Diffstat (limited to 'toolsrc/src/BinaryParagraph.cpp')
| -rw-r--r-- | toolsrc/src/BinaryParagraph.cpp | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/toolsrc/src/BinaryParagraph.cpp b/toolsrc/src/BinaryParagraph.cpp index 61c74fcf5..6dceb66d9 100644 --- a/toolsrc/src/BinaryParagraph.cpp +++ b/toolsrc/src/BinaryParagraph.cpp @@ -6,24 +6,57 @@ using namespace vcpkg::details; namespace vcpkg { + // + namespace BinaryParagraphRequiredField + { + static const std::string PACKAGE = "Package"; + static const std::string VERSION = "Version"; + static const std::string ARCHITECTURE = "Architecture"; + static const std::string MULTI_ARCH = "Multi-Arch"; + } + + namespace BinaryParagraphOptionalField + { + static const std::string DESCRIPTION = "Description"; + static const std::string MAINTAINER = "Maintainer"; + static const std::string DEPENDS = "Depends"; + } + + static const std::vector<std::string>& get_list_of_valid_fields() + { + static const std::vector<std::string> valid_fields = + { + BinaryParagraphRequiredField::PACKAGE, + BinaryParagraphRequiredField::VERSION, + BinaryParagraphRequiredField::ARCHITECTURE, + + BinaryParagraphOptionalField::DESCRIPTION, + BinaryParagraphOptionalField::MAINTAINER, + BinaryParagraphOptionalField::DEPENDS + }; + + return valid_fields; + } + BinaryParagraph::BinaryParagraph() = default; - BinaryParagraph::BinaryParagraph(const std::unordered_map<std::string, std::string>& fields) : - version(required_field(fields, "Version")), - description(optional_field(fields, "Description")), - maintainer(optional_field(fields, "Maintainer")) + BinaryParagraph::BinaryParagraph(std::unordered_map<std::string, std::string> fields) { - const std::string name = required_field(fields, "Package"); - const triplet target_triplet = triplet::from_canonical_name(required_field(fields, "Architecture")); + const std::string name = details::remove_required_field(&fields, BinaryParagraphRequiredField::PACKAGE); + const std::string architecture = details::remove_required_field(&fields, BinaryParagraphRequiredField::ARCHITECTURE); + const triplet target_triplet = triplet::from_canonical_name(architecture); + this->spec = package_spec::from_name_and_triplet(name, target_triplet).get_or_throw(); + this->version = details::remove_required_field(&fields, BinaryParagraphRequiredField::VERSION); - { - std::string multi_arch = required_field(fields, "Multi-Arch"); - Checks::check_throw(multi_arch == "same", "Multi-Arch must be 'same' but was %s", multi_arch); - } + this->description = details::remove_optional_field(&fields, BinaryParagraphOptionalField::DESCRIPTION); + this->maintainer = details::remove_optional_field(&fields, BinaryParagraphOptionalField::MAINTAINER); + + std::string multi_arch = details::remove_required_field(&fields, BinaryParagraphRequiredField::MULTI_ARCH); + Checks::check_exit(multi_arch == "same", "Multi-Arch must be 'same' but was %s", multi_arch); - std::string deps = optional_field(fields, "Depends"); - this->depends = parse_depends(deps); + std::string deps = details::remove_optional_field(&fields, BinaryParagraphOptionalField::DEPENDS); + this->depends = details::parse_depends(deps); } BinaryParagraph::BinaryParagraph(const SourceParagraph& spgh, const triplet& target_triplet) |
