diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-08-19 19:27:34 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-08-19 19:27:34 -0700 |
| commit | f219ce0b8c3e84e5fc1df21ad2f2c8b13f0fe413 (patch) | |
| tree | d78ee0a1a2e2a30ee465c6c90cd8544106a9c133 /toolsrc/src/PackageSpec.cpp | |
| parent | 4d34488649fe5d71b8a553706d960a3784c56bb1 (diff) | |
| download | vcpkg-f219ce0b8c3e84e5fc1df21ad2f2c8b13f0fe413.tar.gz vcpkg-f219ce0b8c3e84e5fc1df21ad2f2c8b13f0fe413.zip | |
[vcpkg] Reorganize some parsing functions.
Diffstat (limited to 'toolsrc/src/PackageSpec.cpp')
| -rw-r--r-- | toolsrc/src/PackageSpec.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/toolsrc/src/PackageSpec.cpp b/toolsrc/src/PackageSpec.cpp index e243f4d89..475b3e3f6 100644 --- a/toolsrc/src/PackageSpec.cpp +++ b/toolsrc/src/PackageSpec.cpp @@ -1,8 +1,11 @@ #include "pch.h" #include "PackageSpec.h" +#include "vcpkg_Parse.h" #include "vcpkg_Util.h" +using vcpkg::Parse::parse_comma_list; + namespace vcpkg { static bool is_valid_package_spec_char(char c) @@ -45,11 +48,7 @@ namespace vcpkg std::string PackageSpec::dir() const { return Strings::format("%s_%s", this->m_name, this->m_triplet); } - std::string PackageSpec::to_string(const std::string& name, const Triplet& triplet) - { - return Strings::format("%s:%s", name, triplet); - } - std::string PackageSpec::to_string() const { return to_string(this->name(), this->triplet()); } + std::string PackageSpec::to_string() const { return Strings::format("%s:%s", this->name(), this->triplet()); } bool operator==(const PackageSpec& left, const PackageSpec& right) { @@ -106,4 +105,21 @@ namespace vcpkg } return f; } + + ExpectedT<Features, PackageSpecParseResult> Features::from_string(const std::string& name) + { + auto maybe_spec = ParsedSpecifier::from_string(name); + if (auto spec = maybe_spec.get()) + { + Checks::check_exit( + VCPKG_LINE_INFO, spec->triplet.empty(), "error: triplet not allowed in specifier: %s", name); + + Features f; + f.name = spec->name; + f.features = spec->features; + return f; + } + + return maybe_spec.error(); + } } |
