[vcpkg] Move CI cleaning back out of the 'ci' command into a separate command to restore cross-compilation preinstalls.
MODIFY
include/vcpkg/commands.h
include/vcpkg/commands.h
@@ -27,6 +27,11 @@ namespace vcpkg::Commands
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, Triplet default_triplet);
}
+ namespace CIClean
+ {
+ void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
+ }
+
namespace Env
{
extern const CommandStructure COMMAND_STRUCTURE;

MODIFY
src/vcpkg/commands.ci.cpp
src/vcpkg/commands.ci.cpp
@@ -397,12 +397,6 @@ namespace vcpkg::Commands::CI
const ParsedArguments options = args.parse_arguments(COMMAND_STRUCTURE);
- auto& filesystem = paths.get_filesystem();
- if (filesystem.is_directory(paths.installed))
- {
- filesystem.remove_all_inside(paths.installed, VCPKG_LINE_INFO);
- }
-
std::set<std::string> exclusions_set;
auto it_exclusions = options.settings.find(OPTION_EXCLUDE);
if (it_exclusions != options.settings.end())
@@ -558,11 +552,11 @@ namespace vcpkg::Commands::CI
System::print2("Total elapsed time: ", result.summary.total_elapsed_time, "\n");
result.summary.print();
}
- auto& fs = paths.get_filesystem();
+
auto it_xunit = options.settings.find(OPTION_XUNIT);
if (it_xunit != options.settings.end())
{
- fs.write_contents(fs::u8path(it_xunit->second), xunitTestResults.build_xml(), VCPKG_LINE_INFO);
+ paths.get_filesystem().write_contents(fs::u8path(it_xunit->second), xunitTestResults.build_xml(), VCPKG_LINE_INFO);
}
Checks::exit_success(VCPKG_LINE_INFO);

ADD
src/vcpkg/commands.ciclean.cpp
+#include "pch.h"
+
+#include <vcpkg/base/checks.h>
+#include <vcpkg/base/files.h>
+#include <vcpkg/commands.h>
+#include <vcpkg/vcpkgcmdarguments.h>
+
+using namespace vcpkg;
+
+namespace vcpkg::Commands::CIClean
+{
+ void perform_and_exit(const VcpkgCmdArguments&, const VcpkgPaths& paths)
+ {
+ auto& fs = paths.get_filesystem();
+ if (fs.is_directory(paths.buildtrees))
+ {
+ fs.remove_all_inside(paths.buildtrees, VCPKG_LINE_INFO);
+ }
+
+ if (fs.is_directory(paths.installed))
+ {
+ fs.remove_all_inside(paths.installed, VCPKG_LINE_INFO);
+ }
+
+ if (fs.is_directory(paths.packages))
+ {
+ fs.remove_all_inside(paths.packages, VCPKG_LINE_INFO);
+ }
+
+ Checks::exit_success(VCPKG_LINE_INFO);
+ }
+}

MODIFY
src/vcpkg/commands.cpp
src/vcpkg/commands.cpp
@@ -48,6 +48,7 @@ namespace vcpkg::Commands
{"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},
};

MODIFY
vcpkglib/vcpkglib.vcxproj
vcpkglib/vcpkglib.vcxproj
<ClCompile Include="..\src\vcpkg\commands.buildexternal.cpp" />
<ClCompile Include="..\src\vcpkg\commands.cache.cpp" />
<ClCompile Include="..\src\vcpkg\commands.ci.cpp" />
+ <ClCompile Include="..\src\vcpkg\commands.ciclean.cpp" />
<ClCompile Include="..\src\vcpkg\commands.contact.cpp" />
<ClCompile Include="..\src\vcpkg\commands.cpp" />
<ClCompile Include="..\src\vcpkg\commands.create.cpp" />

MODIFY
vcpkglib/vcpkglib.vcxproj.filters
vcpkglib/vcpkglib.vcxproj.filters
<ClCompile Include="..\src\vcpkg\commands.ci.cpp">
<Filter>Source Files\vcpkg</Filter>
</ClCompile>
+ <ClCompile Include="..\src\vcpkg\commands.ciclean.cpp">
+ <Filter>Source Files\vcpkg</Filter>
+ </ClCompile>
<ClCompile Include="..\src\vcpkg\commands.contact.cpp">
<Filter>Source Files\vcpkg</Filter>
</ClCompile>

[vcpkg] Move CI cleaning back out of the 'ci' command into a separate command to restore cross-compilation preinstalls. (#11545)