2024-08-23 23:58:26 +02:00
|
|
|
import * as cache from '@actions/cache'
|
|
|
|
import * as core from '@actions/core'
|
2024-08-24 10:08:12 +02:00
|
|
|
import * as exec from '@actions/exec'
|
2024-08-23 23:58:26 +02:00
|
|
|
import {STATE_CACHE_MATCHED_KEY, STATE_CACHE_KEY} from './cache/restore-cache'
|
|
|
|
import {cacheLocalPath, enableCache} from './utils/inputs'
|
|
|
|
|
|
|
|
export async function run(): Promise<void> {
|
|
|
|
try {
|
|
|
|
if (enableCache) {
|
|
|
|
await saveCache()
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
const err = error as Error
|
|
|
|
core.setFailed(err.message)
|
|
|
|
}
|
|
|
|
process.exit(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
async function saveCache(): Promise<void> {
|
|
|
|
const cacheKey = core.getState(STATE_CACHE_KEY)
|
|
|
|
const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY)
|
|
|
|
|
|
|
|
if (!cacheKey) {
|
|
|
|
core.warning('Error retrieving cache key from state.')
|
|
|
|
return
|
|
|
|
} else if (matchedKey === cacheKey) {
|
|
|
|
core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`)
|
|
|
|
return
|
|
|
|
}
|
2024-08-24 10:08:12 +02:00
|
|
|
|
|
|
|
await pruneCache()
|
|
|
|
|
2024-08-23 23:58:26 +02:00
|
|
|
core.info(`Saving cache path: ${cacheLocalPath}`)
|
|
|
|
await cache.saveCache([cacheLocalPath], cacheKey)
|
|
|
|
|
|
|
|
core.info(`cache saved with the key: ${cacheKey}`)
|
|
|
|
}
|
|
|
|
|
2024-08-24 10:08:12 +02:00
|
|
|
async function pruneCache(): Promise<void> {
|
|
|
|
const options: exec.ExecOptions = {
|
|
|
|
silent: !core.isDebug()
|
|
|
|
}
|
|
|
|
const execArgs = ['cache', 'prune', '--ci']
|
|
|
|
|
|
|
|
core.info('Pruning cache...')
|
|
|
|
await exec.exec('uv', execArgs, options)
|
|
|
|
}
|
|
|
|
|
2024-08-23 23:58:26 +02:00
|
|
|
run()
|