Also add "force-overwrite" option to save-only action

This commit is contained in:
PrinsFrank 2024-08-02 21:12:44 +02:00
parent b70ee8ec79
commit 0d93be3424
2 changed files with 10 additions and 4 deletions

View file

@ -15,6 +15,10 @@ inputs:
description: 'An optional boolean when enabled, allows windows runners to save caches that can be restored on other platforms' description: 'An optional boolean when enabled, allows windows runners to save caches that can be restored on other platforms'
default: 'false' default: 'false'
required: false required: false
force-overwrite:
description: 'Delete any previous (incremental) cache before pushing a new cache even if a cache for the primary cache key exists'
default: 'false'
required: false
runs: runs:
using: 'node20' using: 'node20'
main: '../dist/save-only/index.js' main: '../dist/save-only/index.js'

View file

@ -8,7 +8,6 @@ import {
StateProvider StateProvider
} from "./stateProvider"; } from "./stateProvider";
import * as utils from "./utils/actionUtils"; import * as utils from "./utils/actionUtils";
import { issueCommand } from "@actions/core/lib/command";
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in // Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to // @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to
@ -51,13 +50,16 @@ export async function saveImpl(
const forceOverwrite = utils.getInputAsBool(Inputs.ForceOverwrite); const forceOverwrite = utils.getInputAsBool(Inputs.ForceOverwrite);
if (utils.isExactKeyMatch(primaryKey, restoredKey) && !forceOverwrite) { if (utils.isExactKeyMatch(primaryKey, restoredKey) && !forceOverwrite) {
core.info( core.info(
`Cache hit occurred on the primary key ${primaryKey} and force-overwrite is disabled, not saving cache.` `Cache hit occurred on the primary key "${primaryKey}" and force-overwrite is disabled, not saving cache.`
); );
return; return;
} }
if (utils.isExactKeyMatch(primaryKey, restoredKey) && forceOverwrite) { if ((restoredKey == undefined || utils.isExactKeyMatch(primaryKey, restoredKey)) && forceOverwrite) {
await issueCommand('actions-cache delete', {}, primaryKey); core.info(
`Cache hit occurred on the primary key "${primaryKey}" or running as save-only and force-overwrite is enabled, deleting cache.`
);
await cache.deleteCache(primaryKey)
} }
const cachePaths = utils.getInputAsArray(Inputs.Path, { const cachePaths = utils.getInputAsArray(Inputs.Path, {