aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorRyan Saunders <saunders@aggienetwork.com>2019-04-10 23:01:37 -0700
committerRyan Saunders <saunders@aggienetwork.com>2019-04-10 23:01:37 -0700
commit80965287d1483f98f49ba83e026f022369798990 (patch)
tree0473681b55e381eb210e70f51e2369842fed8456 /toolsrc/src
parent5a9b14c97823c5402c62184246c8a6856da5d224 (diff)
downloadvcpkg-80965287d1483f98f49ba83e026f022369798990.tar.gz
vcpkg-80965287d1483f98f49ba83e026f022369798990.zip
Add --no-recurse switch to depend-info command.
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/commands.dependinfo.cpp15
-rw-r--r--toolsrc/src/vcpkg/help.cpp3
2 files changed, 11 insertions, 7 deletions
diff --git a/toolsrc/src/vcpkg/commands.dependinfo.cpp b/toolsrc/src/vcpkg/commands.dependinfo.cpp
index 455f3b7c5..6c3697ab4 100644
--- a/toolsrc/src/vcpkg/commands.dependinfo.cpp
+++ b/toolsrc/src/vcpkg/commands.dependinfo.cpp
@@ -11,10 +11,12 @@ namespace vcpkg::Commands::DependInfo
{
constexpr StringLiteral OPTION_DOT = "--dot";
constexpr StringLiteral OPTION_DGML = "--dgml";
+ constexpr StringLiteral OPTION_NO_RECURSE = "--no-recurse";
- constexpr std::array<CommandSwitch, 2> DEPEND_SWITCHES = {{
+ constexpr std::array<CommandSwitch, 3> DEPEND_SWITCHES = {{
{OPTION_DOT, "Creates graph on basis of dot"},
{OPTION_DGML, "Creates graph on basis of dgml"},
+ {OPTION_NO_RECURSE, "Computes only immediate dependencies of packages explicitly specified on the command-line"},
}};
const CommandStructure COMMAND_STRUCTURE = {
@@ -121,7 +123,8 @@ namespace vcpkg::Commands::DependInfo
void build_dependencies_list(std::set<std::string>& packages_to_keep,
const std::string& requested_package,
- const std::vector<std::unique_ptr<SourceControlFile>>& source_control_files)
+ const std::vector<std::unique_ptr<SourceControlFile>>& source_control_files,
+ const std::unordered_set<std::string>& switches)
{
const auto source_control_file =
Util::find_if(source_control_files, [&requested_package](const auto& source_control_file) {
@@ -132,11 +135,11 @@ namespace vcpkg::Commands::DependInfo
{
const auto new_package = packages_to_keep.insert(requested_package).second;
- if (new_package)
+ if (new_package && !Util::Sets::contains(switches, OPTION_NO_RECURSE))
{
for (const auto& dependency : (*source_control_file)->core_paragraph->depends)
{
- build_dependencies_list(packages_to_keep, dependency.depend.name, source_control_files);
+ build_dependencies_list(packages_to_keep, dependency.depend.name, source_control_files, switches);
}
}
}
@@ -157,7 +160,7 @@ namespace vcpkg::Commands::DependInfo
std::set<std::string> packages_to_keep;
for (const auto& requested_package : args.command_arguments)
{
- build_dependencies_list(packages_to_keep, requested_package, source_control_files);
+ build_dependencies_list(packages_to_keep, requested_package, source_control_files, options.switches);
}
Util::erase_remove_if(source_control_files, [&packages_to_keep](const auto& source_control_file) {
@@ -165,7 +168,7 @@ namespace vcpkg::Commands::DependInfo
});
}
- if (!options.switches.empty())
+ if (Util::Sets::contains(options.switches, OPTION_DOT) || Util::Sets::contains(options.switches, OPTION_DGML))
{
const std::string graph_as_string = create_graph_as_string(options.switches, source_control_files);
System::println(graph_as_string);
diff --git a/toolsrc/src/vcpkg/help.cpp b/toolsrc/src/vcpkg/help.cpp
index 5df878a91..67a7e852b 100644
--- a/toolsrc/src/vcpkg/help.cpp
+++ b/toolsrc/src/vcpkg/help.cpp
@@ -49,9 +49,10 @@ namespace vcpkg::Help
nullptr,
};
- static constexpr std::array<Topic, 12> topics = {{
+ static constexpr std::array<Topic, 13> topics = {{
{"create", command_topic_fn<Commands::Create::COMMAND_STRUCTURE>},
{"edit", command_topic_fn<Commands::Edit::COMMAND_STRUCTURE>},
+ {"depend-info", command_topic_fn<Commands::DependInfo::COMMAND_STRUCTURE>},
{"env", command_topic_fn<Commands::Env::COMMAND_STRUCTURE>},
{"export", command_topic_fn<Export::COMMAND_STRUCTURE>},
{"help", command_topic_fn<Help::COMMAND_STRUCTURE>},