aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-12-05 18:03:36 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2017-12-05 18:03:36 -0800
commit705c8f201273e9bdad9508903d26b21f5d76f1c3 (patch)
treeffc2b019217948ef65d367585def0ba4282448eb /toolsrc/src
parente7cbb50f3dd323380928f4cb4e5b9bc0945abac8 (diff)
downloadvcpkg-705c8f201273e9bdad9508903d26b21f5d76f1c3.tar.gz
vcpkg-705c8f201273e9bdad9508903d26b21f5d76f1c3.zip
Improve error message when failing to parse package
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/packagespec.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/toolsrc/src/vcpkg/packagespec.cpp b/toolsrc/src/vcpkg/packagespec.cpp
index eeb9981af..17189afcf 100644
--- a/toolsrc/src/vcpkg/packagespec.cpp
+++ b/toolsrc/src/vcpkg/packagespec.cpp
@@ -2,6 +2,7 @@
#include <vcpkg/base/util.h>
#include <vcpkg/packagespec.h>
+#include <vcpkg/packagespecparseresult.h>
#include <vcpkg/parse.h>
using vcpkg::Parse::parse_comma_list;
@@ -95,8 +96,19 @@ namespace vcpkg
std::vector<PackageSpec> PackageSpec::to_package_specs(const std::vector<std::string>& ports,
const Triplet& triplet)
{
- return Util::fmap(ports, [&](const std::string s) {
- return PackageSpec::from_name_and_triplet(s, triplet).value_or_exit(VCPKG_LINE_INFO);
+ return Util::fmap(ports, [&](const std::string& s) -> PackageSpec {
+ auto maybe_spec = PackageSpec::from_name_and_triplet(s, triplet);
+ if (auto spec = maybe_spec.get())
+ {
+ return std::move(*spec);
+ }
+
+ const PackageSpecParseResult error_type = maybe_spec.error();
+ Checks::exit_with_message(VCPKG_LINE_INFO,
+ "Invalid package: %s\n"
+ "%s",
+ s,
+ vcpkg::to_string(error_type));
});
}