aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2020-08-01 13:45:17 -0700
committerGitHub <noreply@github.com>2020-08-01 13:45:17 -0700
commit54ec974afefae1864b423335ba8bcb64291d2317 (patch)
tree24443f5bcb949a06aa5edef8850a7e633baa6a6f /toolsrc/src
parent00e44369cb23f911821ee96888cbb4785810ba07 (diff)
downloadvcpkg-54ec974afefae1864b423335ba8bcb64291d2317.tar.gz
vcpkg-54ec974afefae1864b423335ba8bcb64291d2317.zip
[vcpkg] Refactor commands 2: Electric Boogaloo (#12641)
* Add BasicCommand and VersionCommand * Add ContactCommand * test get_available_commands_type_c * Change get_available_commands_type_c to return objects * Add TripletCommand & InstallCommand * Add SetInstalledCommand * add linking tests * Add CICommand * Add remaining *Command objects * Add tests for commands_type_a * Move over to using const TripletCommand* for commands_type_a * Add PathsCommand * Add SearchCommand * add test for commands_type_b * add *Command for all type b commands * Switch from function pointers to PathsCommand for everything * format * rename get_available_commands also remove CommandType* types
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg-test/commands.cpp68
-rw-r--r--toolsrc/src/vcpkg.cpp12
-rw-r--r--toolsrc/src/vcpkg/build.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.autocomplete.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.buildexternal.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.cache.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.ci.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.ciclean.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.contact.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.cpp103
-rw-r--r--toolsrc/src/vcpkg/commands.create.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.dependinfo.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.edit.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.env.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.fetch.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.format-manifest.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.hash.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.integrate.cpp111
-rw-r--r--toolsrc/src/vcpkg/commands.list.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.owns.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.porthistory.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.portsdiff.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.search.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.setinstalled.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.upgrade.cpp7
-rw-r--r--toolsrc/src/vcpkg/commands.version.cpp5
-rw-r--r--toolsrc/src/vcpkg/commands.xvsinstances.cpp5
-rw-r--r--toolsrc/src/vcpkg/export.cpp7
-rw-r--r--toolsrc/src/vcpkg/help.cpp5
-rw-r--r--toolsrc/src/vcpkg/install.cpp7
-rw-r--r--toolsrc/src/vcpkg/remove.cpp7
-rw-r--r--toolsrc/src/vcpkg/update.cpp5
32 files changed, 359 insertions, 95 deletions
diff --git a/toolsrc/src/vcpkg-test/commands.cpp b/toolsrc/src/vcpkg-test/commands.cpp
new file mode 100644
index 000000000..eeefa3098
--- /dev/null
+++ b/toolsrc/src/vcpkg-test/commands.cpp
@@ -0,0 +1,68 @@
+#include <catch2/catch.hpp>
+
+#include <vcpkg/commands.contact.h>
+#include <vcpkg/commands.h>
+#include <vcpkg/commands.version.h>
+
+using namespace vcpkg;
+
+TEST_CASE ("test commands are constructible", "[commands]")
+{
+ Commands::Contact::ContactCommand contact{};
+ Commands::Version::VersionCommand version{};
+}
+
+TEST_CASE ("get_available_basic_commands works", "[commands]")
+{
+ auto commands_list = Commands::get_available_basic_commands();
+ CHECK(commands_list.size() == 2);
+ CHECK(Commands::find("version", commands_list) != nullptr);
+ CHECK(Commands::find("contact", commands_list) != nullptr);
+ CHECK(Commands::find("aang", commands_list) == nullptr);
+}
+
+TEST_CASE ("get_available_paths_commands works", "[commands]")
+{
+ auto commands_list = Commands::get_available_paths_commands();
+ CHECK(commands_list.size() == 18);
+
+ CHECK(Commands::find("/?", commands_list) != nullptr);
+ CHECK(Commands::find("help", commands_list) != nullptr);
+ CHECK(Commands::find("search", commands_list) != nullptr);
+ CHECK(Commands::find("list", commands_list) != nullptr);
+ CHECK(Commands::find("integrate", commands_list) != nullptr);
+ CHECK(Commands::find("owns", commands_list) != nullptr);
+ CHECK(Commands::find("update", commands_list) != nullptr);
+ CHECK(Commands::find("edit", commands_list) != nullptr);
+ CHECK(Commands::find("create", commands_list) != nullptr);
+ CHECK(Commands::find("cache", commands_list) != nullptr);
+ CHECK(Commands::find("portsdiff", commands_list) != nullptr);
+ CHECK(Commands::find("autocomplete", commands_list) != nullptr);
+ CHECK(Commands::find("hash", commands_list) != nullptr);
+ CHECK(Commands::find("fetch", commands_list) != nullptr);
+ CHECK(Commands::find("x-ci-clean", commands_list) != nullptr);
+ CHECK(Commands::find("x-history", commands_list) != nullptr);
+ CHECK(Commands::find("x-vsinstances", commands_list) != nullptr);
+ CHECK(Commands::find("x-format-manifest", commands_list) != nullptr);
+
+ CHECK(Commands::find("korra", commands_list) == nullptr);
+}
+
+TEST_CASE ("get_available_commands_type_a works", "[commands]")
+{
+ auto commands_list = Commands::get_available_triplet_commands();
+ CHECK(commands_list.size() == 10);
+
+ CHECK(Commands::find("install", commands_list) != nullptr);
+ CHECK(Commands::find("x-set-installed", commands_list) != nullptr);
+ CHECK(Commands::find("ci", commands_list) != nullptr);
+ CHECK(Commands::find("remove", commands_list) != nullptr);
+ CHECK(Commands::find("upgrade", commands_list) != nullptr);
+ CHECK(Commands::find("build", commands_list) != nullptr);
+ CHECK(Commands::find("env", commands_list) != nullptr);
+ CHECK(Commands::find("build-external", commands_list) != nullptr);
+ CHECK(Commands::find("export", commands_list) != nullptr);
+ CHECK(Commands::find("depend-info", commands_list) != nullptr);
+
+ CHECK(Commands::find("mai", commands_list) == nullptr);
+}
diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp
index 2bfa3f508..0158b3755 100644
--- a/toolsrc/src/vcpkg.cpp
+++ b/toolsrc/src/vcpkg.cpp
@@ -68,9 +68,9 @@ static void inner(vcpkg::Files::Filesystem& fs, const VcpkgCmdArguments& args)
}
};
- if (const auto command_function = find_command(Commands::get_available_commands_type_c()))
+ if (const auto command_function = find_command(Commands::get_available_basic_commands()))
{
- return command_function->function(args, fs);
+ return command_function->function->perform_and_exit(args, fs);
}
const VcpkgPaths paths(fs, args);
@@ -104,17 +104,17 @@ static void inner(vcpkg::Files::Filesystem& fs, const VcpkgCmdArguments& args)
}
}
- if (const auto command_function = find_command(Commands::get_available_commands_type_b()))
+ if (const auto command_function = find_command(Commands::get_available_paths_commands()))
{
- return command_function->function(args, paths);
+ return command_function->function->perform_and_exit(args, paths);
}
Triplet default_triplet = vcpkg::default_triplet(args);
Input::check_triplet(default_triplet, paths);
- if (const auto command_function = find_command(Commands::get_available_commands_type_a()))
+ if (const auto command_function = find_command(Commands::get_available_triplet_commands()))
{
- return command_function->function(args, paths, default_triplet);
+ return command_function->function->perform_and_exit(args, paths, default_triplet);
}
return invalid_command(args.command);
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index 83d596473..cfba94b9f 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -188,6 +188,13 @@ namespace vcpkg::Build
Build::null_build_logs_recorder(),
paths);
}
+
+ void BuildCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Build::Command::perform_and_exit(args, paths, default_triplet);
+ }
}
namespace vcpkg::Build
diff --git a/toolsrc/src/vcpkg/commands.autocomplete.cpp b/toolsrc/src/vcpkg/commands.autocomplete.cpp
index 05499988d..b035aa3dd 100644
--- a/toolsrc/src/vcpkg/commands.autocomplete.cpp
+++ b/toolsrc/src/vcpkg/commands.autocomplete.cpp
@@ -178,4 +178,9 @@ namespace vcpkg::Commands::Autocomplete
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void AutocompleteCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Autocomplete::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.buildexternal.cpp b/toolsrc/src/vcpkg/commands.buildexternal.cpp
index ccd477a07..5f2e707c4 100644
--- a/toolsrc/src/vcpkg/commands.buildexternal.cpp
+++ b/toolsrc/src/vcpkg/commands.buildexternal.cpp
@@ -43,4 +43,11 @@ namespace vcpkg::Commands::BuildExternal
Build::null_build_logs_recorder(),
paths);
}
+
+ void BuildExternalCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ BuildExternal::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.cache.cpp b/toolsrc/src/vcpkg/commands.cache.cpp
index 70d88bcd3..5c2de88b3 100644
--- a/toolsrc/src/vcpkg/commands.cache.cpp
+++ b/toolsrc/src/vcpkg/commands.cache.cpp
@@ -71,4 +71,9 @@ namespace vcpkg::Commands::Cache
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void CacheCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Cache::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.ci.cpp b/toolsrc/src/vcpkg/commands.ci.cpp
index 92f25c806..04633903d 100644
--- a/toolsrc/src/vcpkg/commands.ci.cpp
+++ b/toolsrc/src/vcpkg/commands.ci.cpp
@@ -579,4 +579,11 @@ namespace vcpkg::Commands::CI
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void CICommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ CI::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.ciclean.cpp b/toolsrc/src/vcpkg/commands.ciclean.cpp
index 3152be7d9..107c8119f 100644
--- a/toolsrc/src/vcpkg/commands.ciclean.cpp
+++ b/toolsrc/src/vcpkg/commands.ciclean.cpp
@@ -39,4 +39,9 @@ namespace vcpkg::Commands::CIClean
print2("Completed vcpkg CI clean\n");
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void CICleanCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ CIClean::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.contact.cpp b/toolsrc/src/vcpkg/commands.contact.cpp
index 14e78c92b..b7ed9a941 100644
--- a/toolsrc/src/vcpkg/commands.contact.cpp
+++ b/toolsrc/src/vcpkg/commands.contact.cpp
@@ -58,4 +58,9 @@ namespace vcpkg::Commands::Contact
}
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void ContactCommand::perform_and_exit(const VcpkgCmdArguments& args, Files::Filesystem& fs) const
+ {
+ Contact::perform_and_exit(args, fs);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.cpp b/toolsrc/src/vcpkg/commands.cpp
index f8b67de74..9c8950a9b 100644
--- a/toolsrc/src/vcpkg/commands.cpp
+++ b/toolsrc/src/vcpkg/commands.cpp
@@ -35,53 +35,84 @@
namespace vcpkg::Commands
{
- Span<const PackageNameAndFunction<CommandTypeA>> get_available_commands_type_a()
+ Span<const PackageNameAndFunction<const BasicCommand*>> get_available_basic_commands()
{
- static std::vector<PackageNameAndFunction<CommandTypeA>> t = {
- {"install", &Install::perform_and_exit},
- {"x-set-installed", &SetInstalled::perform_and_exit},
- {"ci", &CI::perform_and_exit},
- {"remove", &Remove::perform_and_exit},
- {"upgrade", &Upgrade::perform_and_exit},
- {"build", &Build::Command::perform_and_exit},
- {"env", &Env::perform_and_exit},
- {"build-external", &BuildExternal::perform_and_exit},
- {"export", &Export::perform_and_exit},
- {"depend-info", &DependInfo::perform_and_exit},
+ static const Version::VersionCommand version{};
+ static const Contact::ContactCommand contact{};
+ static std::vector<PackageNameAndFunction<const BasicCommand*>> t = {
+ {"version", &version},
+ {"contact", &contact},
};
return t;
}
- Span<const PackageNameAndFunction<CommandTypeB>> get_available_commands_type_b()
+ Span<const PackageNameAndFunction<const PathsCommand*>> get_available_paths_commands()
{
- static std::vector<PackageNameAndFunction<CommandTypeB>> t = {
- {"/?", &Help::perform_and_exit},
- {"help", &Help::perform_and_exit},
- {"search", &Search::perform_and_exit},
- {"list", &List::perform_and_exit},
- {"integrate", &Integrate::perform_and_exit},
- {"owns", &Owns::perform_and_exit},
- {"update", &Update::perform_and_exit},
- {"edit", &Edit::perform_and_exit},
- {"create", &Create::perform_and_exit},
- {"cache", &Cache::perform_and_exit},
- {"portsdiff", &PortsDiff::perform_and_exit},
- {"autocomplete", &Autocomplete::perform_and_exit},
- {"hash", &Hash::perform_and_exit},
- {"fetch", &Fetch::perform_and_exit},
- {"x-ci-clean", &CIClean::perform_and_exit},
- {"x-history", &PortHistory::perform_and_exit},
- {"x-vsinstances", &X_VSInstances::perform_and_exit},
- {"x-format-manifest", &FormatManifest::perform_and_exit},
+ static const Help::HelpCommand help{};
+ static const Search::SearchCommand search{};
+ static const List::ListCommand list{};
+ static const Integrate::IntegrateCommand integrate{};
+ static const Owns::OwnsCommand owns{};
+ static const Update::UpdateCommand update{};
+ static const Edit::EditCommand edit{};
+ static const Create::CreateCommand create{};
+ static const Cache::CacheCommand cache{};
+ static const PortsDiff::PortsDiffCommand portsdiff{};
+ static const Autocomplete::AutocompleteCommand autocomplete{};
+ static const Hash::HashCommand hash{};
+ static const Fetch::FetchCommand fetch{};
+ static const CIClean::CICleanCommand ciclean{};
+ static const PortHistory::PortHistoryCommand porthistory{};
+ static const X_VSInstances::VSInstancesCommand vsinstances{};
+ static const FormatManifest::FormatManifestCommand format_manifest{};
+
+ static std::vector<PackageNameAndFunction<const PathsCommand*>> t = {
+ {"/?", &help},
+ {"help", &help},
+ {"search", &search},
+ {"list", &list},
+ {"integrate", &integrate},
+ {"owns", &owns},
+ {"update", &update},
+ {"edit", &edit},
+ {"create", &create},
+ {"cache", &cache},
+ {"portsdiff", &portsdiff},
+ {"autocomplete", &autocomplete},
+ {"hash", &hash},
+ {"fetch", &fetch},
+ {"x-ci-clean", &ciclean},
+ {"x-history", &porthistory},
+ {"x-vsinstances", &vsinstances},
+ {"x-format-manifest", &format_manifest},
};
return t;
}
- Span<const PackageNameAndFunction<CommandTypeC>> get_available_commands_type_c()
+ Span<const PackageNameAndFunction<const TripletCommand*>> get_available_triplet_commands()
{
- static std::vector<PackageNameAndFunction<CommandTypeC>> t = {
- {"version", &Version::perform_and_exit},
- {"contact", &Contact::perform_and_exit},
+ static const Install::InstallCommand install{};
+ static const SetInstalled::SetInstalledCommand set_installed{};
+ static const CI::CICommand ci{};
+ static const Remove::RemoveCommand remove{};
+ static const Upgrade::UpgradeCommand upgrade{};
+ static const Build::BuildCommand build{};
+ static const Env::EnvCommand env{};
+ static const BuildExternal::BuildExternalCommand build_external{};
+ static const Export::ExportCommand export_command{};
+ static const DependInfo::DependInfoCommand depend_info{};
+
+ static std::vector<PackageNameAndFunction<const TripletCommand*>> t = {
+ {"install", &install},
+ {"x-set-installed", &set_installed},
+ {"ci", &ci},
+ {"remove", &remove},
+ {"upgrade", &upgrade},
+ {"build", &build},
+ {"env", &env},
+ {"build-external", &build_external},
+ {"export", &export_command},
+ {"depend-info", &depend_info},
};
return t;
}
diff --git a/toolsrc/src/vcpkg/commands.create.cpp b/toolsrc/src/vcpkg/commands.create.cpp
index 9ea265f29..8843a509d 100644
--- a/toolsrc/src/vcpkg/commands.create.cpp
+++ b/toolsrc/src/vcpkg/commands.create.cpp
@@ -44,4 +44,9 @@ namespace vcpkg::Commands::Create
{
Checks::exit_with_code(VCPKG_LINE_INFO, perform(args, paths));
}
+
+ void CreateCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Create::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.dependinfo.cpp b/toolsrc/src/vcpkg/commands.dependinfo.cpp
index e1cf0643f..77a8c6c4e 100644
--- a/toolsrc/src/vcpkg/commands.dependinfo.cpp
+++ b/toolsrc/src/vcpkg/commands.dependinfo.cpp
@@ -328,4 +328,11 @@ namespace vcpkg::Commands::DependInfo
}
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void DependInfoCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ DependInfo::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.edit.cpp b/toolsrc/src/vcpkg/commands.edit.cpp
index 32d0723b1..fb3b66883 100644
--- a/toolsrc/src/vcpkg/commands.edit.cpp
+++ b/toolsrc/src/vcpkg/commands.edit.cpp
@@ -267,4 +267,9 @@ namespace vcpkg::Commands::Edit
#endif
Checks::exit_with_code(VCPKG_LINE_INFO, System::cmd_execute(cmd_line));
}
+
+ void EditCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Edit::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.env.cpp b/toolsrc/src/vcpkg/commands.env.cpp
index 204bbd622..f1d84571f 100644
--- a/toolsrc/src/vcpkg/commands.env.cpp
+++ b/toolsrc/src/vcpkg/commands.env.cpp
@@ -99,4 +99,11 @@ namespace vcpkg::Commands::Env
#endif
Checks::exit_with_code(VCPKG_LINE_INFO, rc);
}
+
+ void EnvCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Env::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.fetch.cpp b/toolsrc/src/vcpkg/commands.fetch.cpp
index d20db7aac..6de20c0b0 100644
--- a/toolsrc/src/vcpkg/commands.fetch.cpp
+++ b/toolsrc/src/vcpkg/commands.fetch.cpp
@@ -21,4 +21,9 @@ namespace vcpkg::Commands::Fetch
System::print2(tool_path.u8string(), '\n');
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void FetchCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Fetch::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.format-manifest.cpp b/toolsrc/src/vcpkg/commands.format-manifest.cpp
index 4cbe964d6..d7bd46359 100644
--- a/toolsrc/src/vcpkg/commands.format-manifest.cpp
+++ b/toolsrc/src/vcpkg/commands.format-manifest.cpp
@@ -94,4 +94,9 @@ namespace vcpkg::Commands::FormatManifest
Checks::exit_success(VCPKG_LINE_INFO);
}
}
+
+ void FormatManifestCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ FormatManifest::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.hash.cpp b/toolsrc/src/vcpkg/commands.hash.cpp
index c43c5a6b4..12ad1554d 100644
--- a/toolsrc/src/vcpkg/commands.hash.cpp
+++ b/toolsrc/src/vcpkg/commands.hash.cpp
@@ -31,4 +31,9 @@ namespace vcpkg::Commands::Hash
System::print2(hash, '\n');
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void HashCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Hash::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index 5a9b4b594..0bb30cb85 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -16,10 +16,10 @@ namespace vcpkg::Commands::Integrate
#if defined(_WIN32)
static std::string create_appdata_shortcut(const std::string& target_path) noexcept
{
- return Strings::format(R"###(
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Condition="Exists('%s') and '$(VCPkgLocalAppDataDisabled)' == ''" Project="%s" />
-</Project>
+ return Strings::format(R"###(
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Condition="Exists('%s') and '$(VCPkgLocalAppDataDisabled)' == ''" Project="%s" />
+</Project>
)###",
target_path,
target_path);
@@ -29,15 +29,15 @@ namespace vcpkg::Commands::Integrate
#if defined(_WIN32)
static std::string create_system_targets_shortcut() noexcept
{
- return R"###(
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <!-- version 1 -->
- <PropertyGroup>
- <VCLibPackagePath Condition="'$(VCLibPackagePath)' == ''">$(LOCALAPPDATA)\vcpkg\vcpkg.user</VCLibPackagePath>
- </PropertyGroup>
- <Import Condition="'$(VCLibPackagePath)' != '' and Exists('$(VCLibPackagePath).props')" Project="$(VCLibPackagePath).props" />
- <Import Condition="'$(VCLibPackagePath)' != '' and Exists('$(VCLibPackagePath).targets')" Project="$(VCLibPackagePath).targets" />
-</Project>
+ return R"###(
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!-- version 1 -->
+ <PropertyGroup>
+ <VCLibPackagePath Condition="'$(VCLibPackagePath)' == ''">$(LOCALAPPDATA)\vcpkg\vcpkg.user</VCLibPackagePath>
+ </PropertyGroup>
+ <Import Condition="'$(VCLibPackagePath)' != '' and Exists('$(VCLibPackagePath).props')" Project="$(VCLibPackagePath).props" />
+ <Import Condition="'$(VCLibPackagePath)' != '' and Exists('$(VCLibPackagePath).targets')" Project="$(VCLibPackagePath).targets" />
+</Project>
)###";
}
#endif
@@ -47,13 +47,13 @@ namespace vcpkg::Commands::Integrate
{
const std::string as_string = msbuild_vcpkg_targets_file.string();
- return Strings::format(R"###(
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="%s" Condition="Exists('%s')" />
- <Target Name="CheckValidPlatform" BeforeTargets="Build">
- <Error Text="Unsupported architecture combination. Remove the 'vcpkg' nuget package." Condition="'$(VCPkgEnabled)' != 'true' and '$(VCPkgDisableError)' == ''"/>
- </Target>
-</Project>
+ return Strings::format(R"###(
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="%s" Condition="Exists('%s')" />
+ <Target Name="CheckValidPlatform" BeforeTargets="Build">
+ <Error Text="Unsupported architecture combination. Remove the 'vcpkg' nuget package." Condition="'$(VCPkgEnabled)' != 'true' and '$(VCPkgDisableError)' == ''"/>
+ </Target>
+</Project>
)###",
as_string,
as_string);
@@ -63,12 +63,12 @@ namespace vcpkg::Commands::Integrate
#if defined(_WIN32)
static std::string create_nuget_props_file_contents() noexcept
{
- return R"###(
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <VCPkgLocalAppDataDisabled>true</VCPkgLocalAppDataDisabled>
- </PropertyGroup>
-</Project>
+ return R"###(
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <VCPkgLocalAppDataDisabled>true</VCPkgLocalAppDataDisabled>
+ </PropertyGroup>
+</Project>
)###";
}
#endif
@@ -93,21 +93,21 @@ namespace vcpkg::Commands::Integrate
const std::string& nuget_id,
const std::string& nupkg_version)
{
- static constexpr auto CONTENT_TEMPLATE = R"(
-<package>
- <metadata>
- <id>@NUGET_ID@</id>
- <version>@VERSION@</version>
- <authors>vcpkg</authors>
- <description>
- This package imports all libraries currently installed in @VCPKG_DIR@. This package does not contain any libraries and instead refers to the folder directly (like a symlink).
- </description>
- </metadata>
- <files>
- <file src="vcpkg.nuget.props" target="build\native\@NUGET_ID@.props" />
- <file src="vcpkg.nuget.targets" target="build\native\@NUGET_ID@.targets" />
- </files>
-</package>
+ static constexpr auto CONTENT_TEMPLATE = R"(
+<package>
+ <metadata>
+ <id>@NUGET_ID@</id>
+ <version>@VERSION@</version>
+ <authors>vcpkg</authors>
+ <description>
+ This package imports all libraries currently installed in @VCPKG_DIR@. This package does not contain any libraries and instead refers to the folder directly (like a symlink).
+ </description>
+ </metadata>
+ <files>
+ <file src="vcpkg.nuget.props" target="build\native\@NUGET_ID@.props" />
+ <file src="vcpkg.nuget.targets" target="build\native\@NUGET_ID@.targets" />
+ </files>
+</package>
)";
std::string content = Strings::replace_all(CONTENT_TEMPLATE, "@NUGET_ID@", nuget_id);
@@ -301,18 +301,18 @@ namespace vcpkg::Commands::Integrate
const fs::path cmake_toolchain = paths.buildsystems / "vcpkg.cmake";
#if defined(_WIN32)
System::printf(
- R"(
-All MSBuild C++ projects can now #include any installed libraries.
-Linking will be handled automatically.
-Installing new libraries will make them instantly available.
-
-CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
+ R"(
+All MSBuild C++ projects can now #include any installed libraries.
+Linking will be handled automatically.
+Installing new libraries will make them instantly available.
+
+CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
)",
cmake_toolchain.generic_u8string());
#else
System::printf(
- R"(
-CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
+ R"(
+CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
)",
cmake_toolchain.generic_u8string());
#endif
@@ -394,10 +394,10 @@ CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
auto source_path = buildsystems_dir.u8string();
source_path = Strings::replace_all(std::move(source_path), "`", "``");
- System::printf(R"(
-With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
- Install-Package %s -Source "%s"
-
+ System::printf(R"(
+With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
+ Install-Package %s -Source "%s"
+
)",
nuget_id,
source_path);
@@ -559,4 +559,9 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
Checks::exit_with_message(VCPKG_LINE_INFO, "Unknown parameter %s for integrate", args.command_arguments[0]);
}
+
+ void IntegrateCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Integrate::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.list.cpp b/toolsrc/src/vcpkg/commands.list.cpp
index 006dfb040..b271841f4 100644
--- a/toolsrc/src/vcpkg/commands.list.cpp
+++ b/toolsrc/src/vcpkg/commands.list.cpp
@@ -140,4 +140,9 @@ namespace vcpkg::Commands::List
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void ListCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ List::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.owns.cpp b/toolsrc/src/vcpkg/commands.owns.cpp
index 839298eb8..0850b14c9 100644
--- a/toolsrc/src/vcpkg/commands.owns.cpp
+++ b/toolsrc/src/vcpkg/commands.owns.cpp
@@ -40,4 +40,9 @@ namespace vcpkg::Commands::Owns
search_file(paths, args.command_arguments[0], status_db);
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void OwnsCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Owns::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.porthistory.cpp b/toolsrc/src/vcpkg/commands.porthistory.cpp
index 1fdbc8287..c06517f3c 100644
--- a/toolsrc/src/vcpkg/commands.porthistory.cpp
+++ b/toolsrc/src/vcpkg/commands.porthistory.cpp
@@ -94,4 +94,9 @@ namespace vcpkg::Commands::PortHistory
}
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void PortHistoryCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ PortHistory::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.portsdiff.cpp b/toolsrc/src/vcpkg/commands.portsdiff.cpp
index a4547323e..c4d1d2b1e 100644
--- a/toolsrc/src/vcpkg/commands.portsdiff.cpp
+++ b/toolsrc/src/vcpkg/commands.portsdiff.cpp
@@ -190,4 +190,9 @@ namespace vcpkg::Commands::PortsDiff
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void PortsDiffCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ PortsDiff::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.search.cpp b/toolsrc/src/vcpkg/commands.search.cpp
index 5c9070ca4..1a483a6e1 100644
--- a/toolsrc/src/vcpkg/commands.search.cpp
+++ b/toolsrc/src/vcpkg/commands.search.cpp
@@ -144,4 +144,9 @@ namespace vcpkg::Commands::Search
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void SearchCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Search::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.setinstalled.cpp b/toolsrc/src/vcpkg/commands.setinstalled.cpp
index 2c42ff6a3..742a7a536 100644
--- a/toolsrc/src/vcpkg/commands.setinstalled.cpp
+++ b/toolsrc/src/vcpkg/commands.setinstalled.cpp
@@ -165,4 +165,11 @@ namespace vcpkg::Commands::SetInstalled
dry_run ? DryRun::Yes : DryRun::No,
pkgsconfig);
}
+
+ void SetInstalledCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ SetInstalled::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.upgrade.cpp b/toolsrc/src/vcpkg/commands.upgrade.cpp
index 3092f0bba..f3324f961 100644
--- a/toolsrc/src/vcpkg/commands.upgrade.cpp
+++ b/toolsrc/src/vcpkg/commands.upgrade.cpp
@@ -192,4 +192,11 @@ namespace vcpkg::Commands::Upgrade
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void UpgradeCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Upgrade::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.version.cpp b/toolsrc/src/vcpkg/commands.version.cpp
index fab43e116..2630a18dd 100644
--- a/toolsrc/src/vcpkg/commands.version.cpp
+++ b/toolsrc/src/vcpkg/commands.version.cpp
@@ -93,4 +93,9 @@ namespace vcpkg::Commands::Version
"See LICENSE.txt for license information.\n");
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void VersionCommand::perform_and_exit(const VcpkgCmdArguments& args, Files::Filesystem& fs) const
+ {
+ Version::perform_and_exit(args, fs);
+ }
}
diff --git a/toolsrc/src/vcpkg/commands.xvsinstances.cpp b/toolsrc/src/vcpkg/commands.xvsinstances.cpp
index 279f59674..589ea73e7 100644
--- a/toolsrc/src/vcpkg/commands.xvsinstances.cpp
+++ b/toolsrc/src/vcpkg/commands.xvsinstances.cpp
@@ -33,4 +33,9 @@ namespace vcpkg::Commands::X_VSInstances
Checks::exit_with_message(VCPKG_LINE_INFO, "This command is not supported on non-windows platforms.");
#endif
}
+
+ void VSInstancesCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ X_VSInstances::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/export.cpp b/toolsrc/src/vcpkg/export.cpp
index 54a1180c1..10d79195f 100644
--- a/toolsrc/src/vcpkg/export.cpp
+++ b/toolsrc/src/vcpkg/export.cpp
@@ -659,4 +659,11 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void ExportCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Export::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/help.cpp b/toolsrc/src/vcpkg/help.cpp
index 87436e01c..856ea5623 100644
--- a/toolsrc/src/vcpkg/help.cpp
+++ b/toolsrc/src/vcpkg/help.cpp
@@ -136,4 +136,9 @@ namespace vcpkg::Help
help_topics(paths);
Checks::exit_fail(VCPKG_LINE_INFO);
}
+
+ void HelpCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Help::perform_and_exit(args, paths);
+ }
}
diff --git a/toolsrc/src/vcpkg/install.cpp b/toolsrc/src/vcpkg/install.cpp
index 51682e18b..053acb2ec 100644
--- a/toolsrc/src/vcpkg/install.cpp
+++ b/toolsrc/src/vcpkg/install.cpp
@@ -927,6 +927,13 @@ namespace vcpkg::Install
Checks::exit_success(VCPKG_LINE_INFO);
}
+ void InstallCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Install::perform_and_exit(args, paths, default_triplet);
+ }
+
SpecSummary::SpecSummary(const PackageSpec& spec, const Dependencies::InstallPlanAction* action)
: spec(spec), build_result{BuildResult::NULLVALUE, nullptr}, action(action)
{
diff --git a/toolsrc/src/vcpkg/remove.cpp b/toolsrc/src/vcpkg/remove.cpp
index 62e203b43..8f6a99262 100644
--- a/toolsrc/src/vcpkg/remove.cpp
+++ b/toolsrc/src/vcpkg/remove.cpp
@@ -332,4 +332,11 @@ namespace vcpkg::Remove
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void RemoveCommand::perform_and_exit(const VcpkgCmdArguments& args,
+ const VcpkgPaths& paths,
+ Triplet default_triplet) const
+ {
+ Remove::perform_and_exit(args, paths, default_triplet);
+ }
}
diff --git a/toolsrc/src/vcpkg/update.cpp b/toolsrc/src/vcpkg/update.cpp
index 3a269ea7a..4c99c6f48 100644
--- a/toolsrc/src/vcpkg/update.cpp
+++ b/toolsrc/src/vcpkg/update.cpp
@@ -87,4 +87,9 @@ namespace vcpkg::Update
Checks::exit_success(VCPKG_LINE_INFO);
}
+
+ void UpdateCommand::perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths) const
+ {
+ Update::perform_and_exit(args, paths);
+ }
}