diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-06-08 00:36:17 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-06-08 04:32:57 -0700 |
| commit | 247a6cec90004b8666d155eacc0f27d3a6c8fcf9 (patch) | |
| tree | e63038044933f747161f94f52fc35f435573d08b /toolsrc/src/Paragraphs.cpp | |
| parent | 1b717d851fda51e03b98a18f5304e29b7876c8a3 (diff) | |
| download | vcpkg-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.cpp | 23 |
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( |
