Add ability to cache only latest N versions and cache github/gh-aw-actions (#136)

* add ability to cache only latest N versions

* fix test
This commit is contained in:
Aiqiao Yan
2026-04-13 16:24:07 -04:00
committed by GitHub
parent 567140fe22
commit 3db2cfa8d0
8 changed files with 279 additions and 13 deletions
+22 -4
View File
@@ -23,8 +23,10 @@ async function main() {
const patterns = config.patterns
const defaultBranch = config.defaultBranch
const ignoreTags = config.ignoreTags
const latestMajorVersions = args.latestMajorVersions || config.latestMajorVersions
const latestVersionsPerMajor = args.latestVersionsPerMajor || config.latestVersionsPerMajor
assert.ok(patterns && patterns.length, 'Existing patterns must not be empty')
await actionConfig.add(owner, repo, patterns, defaultBranch, ignoreTags)
await actionConfig.add(owner, repo, patterns, defaultBranch, ignoreTags, latestMajorVersions, latestVersionsPerMajor)
}
}
catch (err) {
@@ -51,6 +53,8 @@ class Args {
all = false
owner = ''
repo = ''
latestMajorVersions = 0
latestVersionsPerMajor = 0
}
/**
@@ -58,9 +62,11 @@ class Args {
* @returns {Args}
*/
function getArgs() {
const parsedArgs = argHelper.parse(['all'])
const parsedArgs = argHelper.parse(['all'], ['latest-major-versions', 'latest-versions-per-major'])
const result = new Args()
result.all = !!parsedArgs.flags['all']
result.latestMajorVersions = parseNonNegativeInt(parsedArgs.options['latest-major-versions'], 'latest-major-versions')
result.latestVersionsPerMajor = parseNonNegativeInt(parsedArgs.options['latest-versions-per-major'], 'latest-versions-per-major')
// All
if (result.all) {
@@ -88,9 +94,21 @@ function getArgs() {
return result
}
function parseNonNegativeInt(value, name) {
if (!value) return 0
const n = Number(value)
if (!Number.isInteger(n) || n < 0) {
argHelper.throwError(`--${name} must be a non-negative integer, got '${value}'`)
}
return n
}
function printUsage() {
console.error('USAGE: update-action.sh nwo')
console.error(` nwo Name with owner. For example: actions/checkout`)
console.error('USAGE: update-action.sh [--all] [--latest-major-versions N] [--latest-versions-per-major N] [nwo]')
console.error(` --all Update all configured actions`)
console.error(` --latest-major-versions Update to only keep the latest N major versions`)
console.error(` --latest-versions-per-major Update to only keep the latest N version tags per major`)
console.error(` nwo Name with owner. For example: actions/checkout`)
}
main()