diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2017-02-27 15:13:13 -0800 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-02-27 15:13:13 -0800 |
| commit | 33952d2dd29208b0a28d3e058e33222ef454f04d (patch) | |
| tree | f200cba709e3d8cf1e84511690d1e21daadb5eaa | |
| parent | eb07291f0c504d56e6def13cd730bd210f5e4c1e (diff) | |
| download | vcpkg-33952d2dd29208b0a28d3e058e33222ef454f04d.tar.gz vcpkg-33952d2dd29208b0a28d3e058e33222ef454f04d.zip | |
Introduce function: load_all_ports()
| -rw-r--r-- | toolsrc/include/vcpkglib.h | 2 | ||||
| -rw-r--r-- | toolsrc/src/commands_search.cpp | 27 | ||||
| -rw-r--r-- | toolsrc/src/vcpkglib.cpp | 20 |
3 files changed, 24 insertions, 25 deletions
diff --git a/toolsrc/include/vcpkglib.h b/toolsrc/include/vcpkglib.h index 50635589a..69cde7ea2 100644 --- a/toolsrc/include/vcpkglib.h +++ b/toolsrc/include/vcpkglib.h @@ -23,4 +23,6 @@ namespace vcpkg expected<SourceParagraph> try_load_port(const fs::path& control_path); expected<BinaryParagraph> try_load_cached_package(const vcpkg_paths& paths, const package_spec& spec); + + std::vector<SourceParagraph> load_all_ports(const fs::path& ports_dir); } // namespace vcpkg diff --git a/toolsrc/src/commands_search.cpp b/toolsrc/src/commands_search.cpp index 56485ac02..c5f2210c8 100644 --- a/toolsrc/src/commands_search.cpp +++ b/toolsrc/src/commands_search.cpp @@ -4,6 +4,7 @@ #include "Paragraphs.h" #include "vcpkglib_helpers.h" #include "SourceParagraph.h" +#include "vcpkglib.h" namespace vcpkg::Commands::Search { @@ -44,30 +45,6 @@ namespace vcpkg::Commands::Search return s; } - static std::vector<SourceParagraph> read_all_source_paragraphs(const vcpkg_paths& paths) - { - std::vector<SourceParagraph> output; - for (auto it = fs::directory_iterator(paths.ports); it != fs::directory_iterator(); ++it) - { - const fs::path& path = it->path(); - - try - { - auto pghs = Paragraphs::get_paragraphs(path / "CONTROL"); - if (pghs.empty()) - { - continue; - } - - auto srcpgh = SourceParagraph(pghs[0]); - output.push_back(srcpgh); - } - catch (std::runtime_error const&) { } - } - - return output; - } - static void do_print(const SourceParagraph& source_paragraph) { System::println("%-20s %-16s %s", @@ -83,7 +60,7 @@ namespace vcpkg::Commands::Search args.check_max_arg_count(1, example); const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({ OPTION_GRAPH }); - const std::vector<SourceParagraph> source_paragraphs = read_all_source_paragraphs(paths); + const std::vector<SourceParagraph> source_paragraphs = load_all_ports(paths.ports); if (options.find(OPTION_GRAPH) != options.cend()) { const std::string graph_as_string = create_graph_as_string(source_paragraphs); diff --git a/toolsrc/src/vcpkglib.cpp b/toolsrc/src/vcpkglib.cpp index 0c71a4d88..d3356d68d 100644 --- a/toolsrc/src/vcpkglib.cpp +++ b/toolsrc/src/vcpkglib.cpp @@ -232,4 +232,24 @@ namespace vcpkg } return control_contents_maybe.error_code(); } + + std::vector<SourceParagraph> load_all_ports(const fs::path& ports_dir) + { + std::vector<SourceParagraph> output; + for (auto it = fs::directory_iterator(ports_dir); it != fs::directory_iterator(); ++it) + { + const fs::path& path = it->path(); + expected<SourceParagraph> source_paragraph = try_load_port(path); + if (auto srcpgh = source_paragraph.get()) + { + output.emplace_back(*srcpgh); + } + else + { + Checks::exit_with_message("Error loading port from %s: %s", path.generic_string(), source_paragraph.error_code().message()); + } + } + + return output; + } } |
