aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/Paragraphs.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-06-08 00:36:17 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-06-08 04:32:57 -0700
commit247a6cec90004b8666d155eacc0f27d3a6c8fcf9 (patch)
treee63038044933f747161f94f52fc35f435573d08b /toolsrc/src/Paragraphs.cpp
parent1b717d851fda51e03b98a18f5304e29b7876c8a3 (diff)
downloadvcpkg-247a6cec90004b8666d155eacc0f27d3a6c8fcf9.tar.gz
vcpkg-247a6cec90004b8666d155eacc0f27d3a6c8fcf9.zip
[vcpkg] Improve diagnostics upon port load failure
Diffstat (limited to 'toolsrc/src/Paragraphs.cpp')
-rw-r--r--toolsrc/src/Paragraphs.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/toolsrc/src/Paragraphs.cpp b/toolsrc/src/Paragraphs.cpp
index 13103d1f8..31e8f1da3 100644
--- a/toolsrc/src/Paragraphs.cpp
+++ b/toolsrc/src/Paragraphs.cpp
@@ -209,6 +209,7 @@ namespace vcpkg::Paragraphs
{
return SourceParagraph::parse_control_file(*p);
}
+ error_info.name = path.filename().generic_u8string();
error_info.error = pghs.error();
return error_info;
}
@@ -226,25 +227,33 @@ namespace vcpkg::Paragraphs
return pghs.error();
}
- std::vector<SourceParagraph> load_all_ports(const Files::Filesystem& fs, const fs::path& ports_dir)
+ LoadResults try_load_all_ports(const Files::Filesystem& fs, const fs::path& ports_dir)
{
- std::vector<SourceParagraph> output;
- std::vector<ParseControlErrorInfo> port_errors;
+ LoadResults ret;
for (auto&& path : fs.get_files_non_recursive(ports_dir))
{
ExpectedT<SourceParagraph, ParseControlErrorInfo> source_paragraph = try_load_port(fs, path);
if (auto srcpgh = source_paragraph.get())
{
- output.emplace_back(std::move(*srcpgh));
+ ret.paragraphs.emplace_back(std::move(*srcpgh));
}
else
{
- port_errors.emplace_back(source_paragraph.error());
+ ret.errors.emplace_back(source_paragraph.error());
}
}
- print_error_message(port_errors);
+ return ret;
+ }
- return output;
+ std::vector<SourceParagraph> load_all_ports(const Files::Filesystem& fs, const fs::path& ports_dir)
+ {
+ auto results = try_load_all_ports(fs, ports_dir);
+ if (!results.errors.empty())
+ {
+ print_error_message(results.errors);
+ Checks::exit_fail(VCPKG_LINE_INFO);
+ }
+ return std::move(results.paragraphs);
}
std::map<std::string, VersionT> extract_port_names_and_versions(