@@ -143001,48 +143001,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
143001
143001
Object.defineProperty(exports, "__esModule", ({ value: true }));
143002
143002
exports.CacheCleaner = void 0;
143003
143003
const core = __importStar(__nccwpck_require__(42186));
143004
- const exec = __importStar(__nccwpck_require__(71514));
143005
- const glob = __importStar(__nccwpck_require__(28090));
143006
143004
const fs_1 = __importDefault(__nccwpck_require__(57147));
143007
143005
const path_1 = __importDefault(__nccwpck_require__(71017));
143006
+ const gradle_1 = __nccwpck_require__(94475);
143008
143007
class CacheCleaner {
143009
143008
constructor(gradleUserHome, tmpDir) {
143010
143009
this.gradleUserHome = gradleUserHome;
143011
143010
this.tmpDir = tmpDir;
143012
143011
}
143013
143012
async prepare() {
143014
- fs_1.default.rmSync(path_1.default.resolve(this.gradleUserHome, 'caches/journal-1'), { recursive: true, force: true });
143015
- fs_1.default.mkdirSync(path_1.default.resolve(this.gradleUserHome, 'caches/journal-1'), { recursive: true });
143016
- fs_1.default.writeFileSync(path_1.default.resolve(this.gradleUserHome, 'caches/journal-1/file-access.properties'), 'inceptionTimestamp=0');
143017
- await this.ageAllFiles();
143018
- await this.touchAllFiles('gc.properties');
143013
+ const timestamp = Date.now().toString();
143014
+ core.saveState('clean-timestamp', timestamp);
143015
+ return timestamp;
143019
143016
}
143020
143017
async forceCleanup() {
143021
- await this.ageAllFiles('gc.properties');
143018
+ const cleanTimestamp = core.getState('clean-timestamp');
143019
+ await this.forceCleanupFilesOlderThan(cleanTimestamp);
143020
+ }
143021
+ async forceCleanupFilesOlderThan(cleanTimestamp) {
143022
+ core.info(`Cleaning up caches before ${cleanTimestamp}`);
143022
143023
const cleanupProjectDir = path_1.default.resolve(this.tmpDir, 'dummy-cleanup-project');
143023
143024
fs_1.default.mkdirSync(cleanupProjectDir, { recursive: true });
143024
143025
fs_1.default.writeFileSync(path_1.default.resolve(cleanupProjectDir, 'settings.gradle'), 'rootProject.name = "dummy-cleanup-project"');
143026
+ fs_1.default.writeFileSync(path_1.default.resolve(cleanupProjectDir, 'init.gradle'), `
143027
+ beforeSettings { settings ->
143028
+ def cleanupTime = ${cleanTimestamp}
143029
+
143030
+ settings.caches {
143031
+ cleanup = Cleanup.ALWAYS
143032
+
143033
+ releasedWrappers.removeUnusedEntriesOlderThan.set(cleanupTime)
143034
+ snapshotWrappers.removeUnusedEntriesOlderThan.set(cleanupTime)
143035
+ downloadedResources.removeUnusedEntriesOlderThan.set(cleanupTime)
143036
+ createdResources.removeUnusedEntriesOlderThan.set(cleanupTime)
143037
+ buildCache.removeUnusedEntriesOlderThan.set(cleanupTime)
143038
+ }
143039
+ }
143040
+ `);
143025
143041
fs_1.default.writeFileSync(path_1.default.resolve(cleanupProjectDir, 'build.gradle'), 'task("noop") {}');
143026
- const gradleCommand = `gradle -g ${this.gradleUserHome} --no-daemon --build-cache --no-scan --quiet -DGITHUB_DEPENDENCY_GRAPH_ENABLED=false noop`;
143027
- await exec.exec(gradleCommand, [], {
143028
- cwd: cleanupProjectDir
143029
- });
143030
- }
143031
- async ageAllFiles(fileName = '*') {
143032
- core.debug(`Aging all files in Gradle User Home with name ${fileName}`);
143033
- await this.setUtimes(`${this.gradleUserHome}/**/${fileName}`, new Date(0));
143034
- }
143035
- async touchAllFiles(fileName = '*') {
143036
- core.debug(`Touching all files in Gradle User Home with name ${fileName}`);
143037
- await this.setUtimes(`${this.gradleUserHome}/**/${fileName}`, new Date());
143038
- }
143039
- async setUtimes(pattern, timestamp) {
143040
- const globber = await glob.create(pattern, {
143041
- implicitDescendants: false
143042
- });
143043
- for await (const file of globber.globGenerator()) {
143044
- fs_1.default.utimesSync(file, timestamp, timestamp);
143045
- }
143042
+ await (0, gradle_1.provisionAndMaybeExecute)('current', cleanupProjectDir, [
143043
+ '-g',
143044
+ this.gradleUserHome,
143045
+ '-I',
143046
+ 'init.gradle',
143047
+ '--info',
143048
+ '--no-daemon',
143049
+ '--no-scan',
143050
+ '--build-cache',
143051
+ '-DGITHUB_DEPENDENCY_GRAPH_ENABLED=false',
143052
+ 'noop'
143053
+ ]);
143046
143054
}
143047
143055
}
143048
143056
exports.CacheCleaner = CacheCleaner;
0 commit comments