aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/BinaryParagraph.cpp
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-09-18 20:50:08 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-09-18 20:54:03 -0700
commitccca198c1b1730b0241911cb56dc8e3504958b2a (patch)
treea2dd9b8b087a09afdcecc5cbb3377bed15127eb2 /toolsrc/src/BinaryParagraph.cpp
downloadvcpkg-ccca198c1b1730b0241911cb56dc8e3504958b2a.tar.gz
vcpkg-ccca198c1b1730b0241911cb56dc8e3504958b2a.zip
Initial commit
Diffstat (limited to 'toolsrc/src/BinaryParagraph.cpp')
-rw-r--r--toolsrc/src/BinaryParagraph.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/toolsrc/src/BinaryParagraph.cpp b/toolsrc/src/BinaryParagraph.cpp
new file mode 100644
index 000000000..274bd879e
--- /dev/null
+++ b/toolsrc/src/BinaryParagraph.cpp
@@ -0,0 +1,82 @@
+#include "BinaryParagraph.h"
+#include "vcpkglib_helpers.h"
+#include "vcpkg_Checks.h"
+
+using namespace vcpkg::details;
+
+namespace vcpkg
+{
+ BinaryParagraph::BinaryParagraph() = default;
+
+ BinaryParagraph::BinaryParagraph(const std::unordered_map<std::string, std::string>& fields)
+ {
+ details::required_field(fields, name, "Package");
+ required_field(fields, version, "Version");
+ required_field(fields, target_triplet.value, "Architecture");
+ {
+ std::string multi_arch;
+ required_field(fields, multi_arch, "Multi-Arch");
+ Checks::check_throw(multi_arch == "same", "Multi-Arch must be 'same' but was %s", multi_arch);
+ }
+ optional_field(fields, description, "Description");
+ std::string deps;
+ optional_field(fields, deps, "Depends");
+ if (!deps.empty())
+ {
+ depends.clear();
+ parse_depends(deps, depends);
+ }
+ optional_field(fields, maintainer, "Maintainer");
+ }
+
+ BinaryParagraph::BinaryParagraph(const SourceParagraph& spgh, const triplet& target_triplet)
+ {
+ this->name = spgh.name;
+ this->version = spgh.version;
+ this->description = spgh.description;
+ this->maintainer = spgh.maintainer;
+ this->depends = spgh.depends;
+ this->target_triplet = target_triplet;
+ }
+
+ std::string BinaryParagraph::displayname() const
+ {
+ return Strings::format("%s:%s", this->name, this->target_triplet);
+ }
+
+ std::string BinaryParagraph::dir() const
+ {
+ return Strings::format("%s_%s", this->name, this->target_triplet);
+ }
+
+ std::string BinaryParagraph::fullstem() const
+ {
+ return Strings::format("%s_%s_%s", this->name, this->version, this->target_triplet);
+ }
+
+ std::ostream& operator<<(std::ostream& os, const BinaryParagraph& p)
+ {
+ os << "Package: " << p.name << "\n";
+ os << "Version: " << p.version << "\n";
+ if (!p.depends.empty())
+ {
+ os << "Depends: " << p.depends.front();
+
+ auto b = p.depends.begin() + 1;
+ auto e = p.depends.end();
+ for (; b != e; ++b)
+ {
+ os << ", " << *b;
+ }
+
+ os << "\n";
+ }
+ os << "Architecture: " << p.target_triplet << "\n";
+ os << "Multi-Arch: same\n";
+ if (!p.maintainer.empty())
+ os << "Maintainer: " << p.maintainer << "\n";
+ if (!p.description.empty())
+ os << "Description: " << p.description << "\n";
+ return os;
+ }
+}