diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-03 17:45:01 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-03 17:45:01 -0700 |
| commit | 5d58eb29cc9ae584335e3380c2645baf05b21222 (patch) | |
| tree | 67800f8c43fdd437286c4d026cccf6a1a1c0527b /toolsrc/src/package_spec.cpp | |
| parent | 2f8c115777cb5f1d407d8a9a05c2cd3c4cad918d (diff) | |
| download | vcpkg-5d58eb29cc9ae584335e3380c2645baf05b21222.tar.gz vcpkg-5d58eb29cc9ae584335e3380c2645baf05b21222.zip | |
[package_spec] Force using the factories that do sanity checks
Diffstat (limited to 'toolsrc/src/package_spec.cpp')
| -rw-r--r-- | toolsrc/src/package_spec.cpp | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/toolsrc/src/package_spec.cpp b/toolsrc/src/package_spec.cpp index 3da0757fd..57f6179bf 100644 --- a/toolsrc/src/package_spec.cpp +++ b/toolsrc/src/package_spec.cpp @@ -3,15 +3,15 @@ namespace vcpkg { - expected<package_spec> package_spec::from_string(const std::string& spec, const triplet& default_target_triplet) + expected<package_spec> package_spec::from_string(const std::string& spec_as_string, const triplet& default_target_triplet) { - std::string s(spec); + std::string s(spec_as_string); std::transform(s.begin(), s.end(), s.begin(), ::tolower); auto pos = s.find(':'); if (pos == std::string::npos) { - return package_spec{s, default_target_triplet}; + return from_name_and_triplet(s, default_target_triplet); } auto pos2 = s.find(':', pos + 1); @@ -20,17 +20,40 @@ namespace vcpkg return std::error_code(package_spec_parse_result::too_many_colons); } - return package_spec{s.substr(0, pos), triplet::from_canonical_name(s.substr(pos + 1))}; + const std::string name = s.substr(0, pos); + const triplet target_triplet = triplet::from_canonical_name(s.substr(pos + 1)); + return from_name_and_triplet(name, target_triplet); + } + + package_spec package_spec::from_name_and_triplet(const std::string& name, const triplet& target_triplet) + { + std::string n(name); + std::transform(n.begin(), n.end(), n.begin(), ::tolower); + + package_spec p; + p.m_name = n; + p.m_target_triplet = target_triplet; + return p; + } + + const std::string& package_spec::name() const + { + return this->m_name; + } + + const triplet& package_spec::target_triplet() const + { + return this->m_target_triplet; } std::string package_spec::dir() const { - return Strings::format("%s_%s", this->name, this->target_triplet); + return Strings::format("%s_%s", this->m_name, this->m_target_triplet); } std::string to_string(const package_spec& spec) { - return Strings::format("%s:%s", spec.name, spec.target_triplet); + return Strings::format("%s:%s", spec.name(), spec.target_triplet()); } std::string to_printf_arg(const package_spec& spec) @@ -40,7 +63,7 @@ namespace vcpkg bool operator==(const package_spec& left, const package_spec& right) { - return left.name == right.name && left.target_triplet == right.target_triplet; + return left.name() == right.name() && left.target_triplet() == right.target_triplet(); } std::ostream& operator<<(std::ostream& os, const package_spec& spec) |
