diff options
| author | nicole mazzuca <mazzucan@outlook.com> | 2020-08-01 13:45:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-01 13:45:17 -0700 |
| commit | 54ec974afefae1864b423335ba8bcb64291d2317 (patch) | |
| tree | 24443f5bcb949a06aa5edef8850a7e633baa6a6f /toolsrc/src | |
| parent | 00e44369cb23f911821ee96888cbb4785810ba07 (diff) | |
| download | vcpkg-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')
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); + } } |
