diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2017-10-17 02:30:27 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-10-17 02:30:27 -0700 |
| commit | 947c6cac332cabb58452178d563a2a0c26def35e (patch) | |
| tree | 0377b9662a995e19ffb0dfbf0a85f85706878d5f /toolsrc/src | |
| parent | 7ed8d4f75e903fdad4c02b4e784f2f4bcb30a3b0 (diff) | |
| download | vcpkg-947c6cac332cabb58452178d563a2a0c26def35e.tar.gz vcpkg-947c6cac332cabb58452178d563a2a0c26def35e.zip | |
`autocomplete` Consider private commands if no public commands match
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/commands.autocomplete.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/toolsrc/src/vcpkg/commands.autocomplete.cpp b/toolsrc/src/vcpkg/commands.autocomplete.cpp index addb9edaf..fcbe73835 100644 --- a/toolsrc/src/vcpkg/commands.autocomplete.cpp +++ b/toolsrc/src/vcpkg/commands.autocomplete.cpp @@ -39,7 +39,8 @@ namespace vcpkg::Commands::Autocomplete { const std::string requested_command = match[1].str(); - std::vector<std::string> valid_commands = { + // First try public commands + std::vector<std::string> public_commands = { "install", "search", "remove", @@ -57,11 +58,31 @@ namespace vcpkg::Commands::Autocomplete "contact", }; - Util::unstable_keep_if(valid_commands, [&](const std::string& s) { + Util::unstable_keep_if(public_commands, [&](const std::string& s) { return Strings::case_insensitive_ascii_starts_with(s, requested_command); }); - output_sorted_results_and_exit(VCPKG_LINE_INFO, std::move(valid_commands)); + if (!public_commands.empty()) + { + output_sorted_results_and_exit(VCPKG_LINE_INFO, std::move(public_commands)); + } + + // If no public commands match, try private commands + std::vector<std::string> private_commands = { + "build", + "buildexternal", + "ci", + "depend-info", + "env", + "import", + "portsdiff", + }; + + Util::unstable_keep_if(private_commands, [&](const std::string& s) { + return Strings::case_insensitive_ascii_starts_with(s, requested_command); + }); + + output_sorted_results_and_exit(VCPKG_LINE_INFO, std::move(private_commands)); } // Handles vcpkg install package:<triplet> |
