aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-10-14 02:16:55 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-10-14 02:16:55 -0700
commit58fd38c8200ce4c96ebe1aae3f85b324456b0ff7 (patch)
tree9099252c05ac5ce846e5f9935535baeb0c17b0fa
parentb73327558ba79354769961a8c3f68e61fe9b673e (diff)
downloadvcpkg-58fd38c8200ce4c96ebe1aae3f85b324456b0ff7.tar.gz
vcpkg-58fd38c8200ce4c96ebe1aae3f85b324456b0ff7.zip
[vcpkg-autocomplete] Add edit completion
-rw-r--r--toolsrc/include/vcpkg/commands.h1
-rw-r--r--toolsrc/include/vcpkg/install.h2
-rw-r--r--toolsrc/include/vcpkg/remove.h2
-rw-r--r--toolsrc/src/vcpkg/commands.autocomplete.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.edit.cpp27
-rw-r--r--toolsrc/src/vcpkg/install.cpp2
-rw-r--r--toolsrc/src/vcpkg/remove.cpp2
7 files changed, 33 insertions, 8 deletions
diff --git a/toolsrc/include/vcpkg/commands.h b/toolsrc/include/vcpkg/commands.h
index 64b2118ce..e00812c98 100644
--- a/toolsrc/include/vcpkg/commands.h
+++ b/toolsrc/include/vcpkg/commands.h
@@ -38,6 +38,7 @@ namespace vcpkg::Commands
namespace Edit
{
+ extern const CommandStructure COMMAND_STRUCTURE;
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
diff --git a/toolsrc/include/vcpkg/install.h b/toolsrc/include/vcpkg/install.h
index 72643ff37..db6055f4f 100644
--- a/toolsrc/include/vcpkg/install.h
+++ b/toolsrc/include/vcpkg/install.h
@@ -65,7 +65,7 @@ namespace vcpkg::Install
const VcpkgPaths& paths,
StatusParagraphs& status_db);
- extern const CommandStructure INSTALL_COMMAND_STRUCTURE;
+ extern const CommandStructure COMMAND_STRUCTURE;
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
diff --git a/toolsrc/include/vcpkg/remove.h b/toolsrc/include/vcpkg/remove.h
index 04f2461be..6d8a3ebe9 100644
--- a/toolsrc/include/vcpkg/remove.h
+++ b/toolsrc/include/vcpkg/remove.h
@@ -19,7 +19,7 @@ namespace vcpkg::Remove
const Purge purge,
StatusParagraphs& status_db);
- extern const CommandStructure REMOVE_COMMAND_STRUCTURE;
+ extern const CommandStructure COMMAND_STRUCTURE;
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
void remove_package(const VcpkgPaths& paths, const PackageSpec& spec, StatusParagraphs* status_db);
diff --git a/toolsrc/src/vcpkg/commands.autocomplete.cpp b/toolsrc/src/vcpkg/commands.autocomplete.cpp
index 2e191b428..23c2c2f7e 100644
--- a/toolsrc/src/vcpkg/commands.autocomplete.cpp
+++ b/toolsrc/src/vcpkg/commands.autocomplete.cpp
@@ -97,8 +97,9 @@ namespace vcpkg::Commands::Autocomplete
const CommandStructure& structure;
};
static constexpr CommandEntry commands[] = {
- {R"###(^install\s(.*\s|)(\S*)$)###", Install::INSTALL_COMMAND_STRUCTURE},
- {R"###(^remove\s(.*\s|)(\S*)$)###", Remove::REMOVE_COMMAND_STRUCTURE},
+ {R"###(^install\s(.*\s|)(\S*)$)###", Install::COMMAND_STRUCTURE},
+ {R"###(^edit\s(.*\s|)(\S*)$)###", Edit::COMMAND_STRUCTURE},
+ {R"###(^remove\s(.*\s|)(\S*)$)###", Remove::COMMAND_STRUCTURE},
};
for (auto&& command : commands)
diff --git a/toolsrc/src/vcpkg/commands.edit.cpp b/toolsrc/src/vcpkg/commands.edit.cpp
index 9497bd76e..a90ae1bc3 100644
--- a/toolsrc/src/vcpkg/commands.edit.cpp
+++ b/toolsrc/src/vcpkg/commands.edit.cpp
@@ -4,6 +4,7 @@
#include <vcpkg/commands.h>
#include <vcpkg/help.h>
#include <vcpkg/input.h>
+#include <vcpkg/paragraphs.h>
namespace vcpkg::Commands::Edit
{
@@ -30,10 +31,32 @@ namespace vcpkg::Commands::Edit
return output;
}
- void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths)
+ static const std::string OPTION_BUILDTREES = "--buildtrees";
+
+ static const std::array<std::string, 1> SWITCHES = {
+ OPTION_BUILDTREES,
+ };
+ static const std::array<std::string, 0> SETTINGS;
+
+ static std::vector<std::string> valid_arguments(const VcpkgPaths& paths)
{
- static const std::string OPTION_BUILDTREES = "--buildtrees";
+ auto sources_and_errors = Paragraphs::try_load_all_ports(paths.get_filesystem(), paths.ports);
+
+ return Util::fmap(sources_and_errors.paragraphs,
+ [](auto&& pgh) -> std::string { return pgh->core_paragraph->name; });
+ }
+
+ const CommandStructure COMMAND_STRUCTURE = {
+ "edit zlib",
+ 1,
+ 1,
+ SWITCHES,
+ SETTINGS,
+ &valid_arguments,
+ };
+ void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths)
+ {
static const fs::path VS_CODE_INSIDERS = fs::path{"Microsoft VS Code Insiders"} / "Code - Insiders.exe";
static const fs::path VS_CODE = fs::path{"Microsoft VS Code"} / "Code.exe";
diff --git a/toolsrc/src/vcpkg/install.cpp b/toolsrc/src/vcpkg/install.cpp
index 6a564b00c..26f729a57 100644
--- a/toolsrc/src/vcpkg/install.cpp
+++ b/toolsrc/src/vcpkg/install.cpp
@@ -548,7 +548,7 @@ namespace vcpkg::Install
[](auto&& pgh) -> std::string { return pgh->core_paragraph->name; });
}
- const CommandStructure INSTALL_COMMAND_STRUCTURE = {
+ const CommandStructure COMMAND_STRUCTURE = {
"install zlib zlib:x64-windows curl boost",
1,
SIZE_MAX,
diff --git a/toolsrc/src/vcpkg/remove.cpp b/toolsrc/src/vcpkg/remove.cpp
index 30b3d6cd8..04ddba1e4 100644
--- a/toolsrc/src/vcpkg/remove.cpp
+++ b/toolsrc/src/vcpkg/remove.cpp
@@ -186,7 +186,7 @@ namespace vcpkg::Remove
return Util::fmap(installed_packages, [](auto&& pgh) -> std::string { return pgh->package.spec.to_string(); });
}
- const CommandStructure REMOVE_COMMAND_STRUCTURE = {
+ const CommandStructure COMMAND_STRUCTURE = {
"remove zlib zlib:x64-windows curl boost",
1,
SIZE_MAX,