diff options
| author | jasjuang <jasjuang@gmail.com> | 2017-09-22 08:14:11 -0700 |
|---|---|---|
| committer | jasjuang <jasjuang@gmail.com> | 2017-09-22 08:14:11 -0700 |
| commit | ab50491732fbcb5e3ddbf5aa494080b67aef0f6d (patch) | |
| tree | b4eabdd9e6b73722ba51f6e34206b32f3b11942a /toolsrc/src/commands_depends.cpp | |
| parent | 2b178b3cb6e166cec2fa7fe3741017ac49a71d04 (diff) | |
| parent | 011368ef9e1754715873eb0a298f0d069210ea6c (diff) | |
| download | vcpkg-ab50491732fbcb5e3ddbf5aa494080b67aef0f6d.tar.gz vcpkg-ab50491732fbcb5e3ddbf5aa494080b67aef0f6d.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'toolsrc/src/commands_depends.cpp')
| -rw-r--r-- | toolsrc/src/commands_depends.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/toolsrc/src/commands_depends.cpp b/toolsrc/src/commands_depends.cpp index ccfe58e4e..2d1fb658b 100644 --- a/toolsrc/src/commands_depends.cpp +++ b/toolsrc/src/commands_depends.cpp @@ -4,16 +4,44 @@ #include "vcpkg_Commands.h" #include "vcpkg_Strings.h" #include "vcpkg_System.h" +#include "vcpkg_Util.h" namespace vcpkg::Commands::DependInfo { void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) { - static const std::string example = Commands::Help::create_example_string(R"###(depend-info)###"); - args.check_exact_arg_count(0, example); + static const std::string example = Commands::Help::create_example_string(R"###(depend-info [pat])###"); + args.check_max_arg_count(1, example); args.check_and_get_optional_command_arguments({}); - const auto source_control_files = Paragraphs::load_all_ports(paths.get_filesystem(), paths.ports); + std::vector<std::unique_ptr<SourceControlFile>> source_control_files = + Paragraphs::load_all_ports(paths.get_filesystem(), paths.ports); + + if (args.command_arguments.size() == 1) + { + const std::string filter = args.command_arguments.at(0); + + Util::erase_remove_if(source_control_files, + [&](const std::unique_ptr<SourceControlFile>& source_control_file) { + + const SourceParagraph& source_paragraph = *source_control_file->core_paragraph; + + if (Strings::case_insensitive_ascii_contains(source_paragraph.name, filter)) + { + return false; + } + + for (const Dependency& dependency : source_paragraph.depends) + { + if (Strings::case_insensitive_ascii_contains(dependency.name, filter)) + { + return false; + } + } + + return true; + }); + } for (auto&& source_control_file : source_control_files) { |
