aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-10-17 02:59:55 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-10-17 02:59:55 -0700
commit3c4f620dbc7ef0005c694ab758c6c7d5e42dbe93 (patch)
treebea9eddcd048118adbf8df411e75576822161ec5
parent947c6cac332cabb58452178d563a2a0c26def35e (diff)
downloadvcpkg-3c4f620dbc7ef0005c694ab758c6c7d5e42dbe93.tar.gz
vcpkg-3c4f620dbc7ef0005c694ab758c6c7d5e42dbe93.zip
`autocomplete` Add autocompletion for `vcpkg integrate`
-rw-r--r--toolsrc/include/vcpkg/commands.h1
-rw-r--r--toolsrc/src/vcpkg/commands.autocomplete.cpp1
-rw-r--r--toolsrc/src/vcpkg/commands.integrate.cpp33
3 files changed, 32 insertions, 3 deletions
diff --git a/toolsrc/include/vcpkg/commands.h b/toolsrc/include/vcpkg/commands.h
index e00812c98..d9ebad2c4 100644
--- a/toolsrc/include/vcpkg/commands.h
+++ b/toolsrc/include/vcpkg/commands.h
@@ -75,6 +75,7 @@ namespace vcpkg::Commands
namespace Integrate
{
extern const char* const INTEGRATE_COMMAND_HELPSTRING;
+ extern const CommandStructure COMMAND_STRUCTURE;
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
diff --git a/toolsrc/src/vcpkg/commands.autocomplete.cpp b/toolsrc/src/vcpkg/commands.autocomplete.cpp
index fcbe73835..e36bf8430 100644
--- a/toolsrc/src/vcpkg/commands.autocomplete.cpp
+++ b/toolsrc/src/vcpkg/commands.autocomplete.cpp
@@ -124,6 +124,7 @@ namespace vcpkg::Commands::Autocomplete
CommandEntry{"install", R"###(^install\s(.*\s|)(\S*)$)###", Install::COMMAND_STRUCTURE},
CommandEntry{"edit", R"###(^edit\s(.*\s|)(\S*)$)###", Edit::COMMAND_STRUCTURE},
CommandEntry{"remove", R"###(^remove\s(.*\s|)(\S*)$)###", Remove::COMMAND_STRUCTURE},
+ CommandEntry{"integrate", R"###(^integrate(\s+)(\S*)$)###", Integrate::COMMAND_STRUCTURE},
};
for (auto&& command : COMMANDS)
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index 0d185476e..c8fa275ab 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -326,6 +326,33 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
" vcpkg integrate remove Remove user-wide integration\n"
" vcpkg integrate project Generate a referencing nuget package for individual VS project use\n";
+ namespace Subcommand
+ {
+ static const std::string INSTALL = "install";
+ static const std::string REMOVE = "remove";
+ static const std::string PROJECT = "project";
+ }
+
+ static const std::array<std::string, 0> INSTALL_SWITCHES;
+
+ static const std::array<std::string, 0> INSTALL_SETTINGS;
+
+ static std::vector<std::string> valid_arguments(const VcpkgPaths&)
+ {
+ return {Subcommand::INSTALL, Subcommand::REMOVE, Subcommand::PROJECT};
+ }
+
+ const CommandStructure COMMAND_STRUCTURE = {
+ Strings::format("Commands:\n"
+ "%s",
+ INTEGRATE_COMMAND_HELPSTRING),
+ 1,
+ 1,
+ INSTALL_SWITCHES,
+ INSTALL_SETTINGS,
+ &valid_arguments,
+ };
+
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths)
{
static const std::string EXAMPLE = Strings::format("Commands:\n"
@@ -335,15 +362,15 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
args.check_and_get_optional_command_arguments({});
#if defined(_WIN32)
- if (args.command_arguments[0] == "install")
+ if (args.command_arguments[0] == Subcommand::INSTALL)
{
return integrate_install(paths);
}
- if (args.command_arguments[0] == "remove")
+ if (args.command_arguments[0] == Subcommand::REMOVE)
{
return integrate_remove(paths.get_filesystem());
}
- if (args.command_arguments[0] == "project")
+ if (args.command_arguments[0] == Subcommand::PROJECT)
{
return integrate_project(paths);
}