mirror of
https://github.com/gradle/actions.git
synced 2025-08-24 02:41:29 +08:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import * as core from '@actions/core'
|
|
import {getActionId} from './configuration'
|
|
|
|
const DEPRECATION_UPGRADE_PAGE = 'https://github.com/gradle/actions/blob/main/docs/deprecation-upgrade-guide.md'
|
|
const recordedDeprecations: Deprecation[] = []
|
|
|
|
export class Deprecation {
|
|
constructor(readonly message: string) {}
|
|
|
|
getDocumentationLink(): string {
|
|
const deprecationAnchor = this.message
|
|
.toLowerCase()
|
|
.replace(/[^\w\s-]|_/g, '')
|
|
.replace(/ /g, '-')
|
|
return `${DEPRECATION_UPGRADE_PAGE}#${deprecationAnchor}`
|
|
}
|
|
}
|
|
|
|
export function recordDeprecation(message: string): void {
|
|
if (!recordedDeprecations.some(deprecation => deprecation.message === message)) {
|
|
recordedDeprecations.push(new Deprecation(message))
|
|
}
|
|
}
|
|
|
|
export function getDeprecations(): Deprecation[] {
|
|
return recordedDeprecations
|
|
}
|
|
|
|
export function emitDeprecationWarnings(): void {
|
|
if (recordedDeprecations.length > 0) {
|
|
core.warning(
|
|
`This job uses deprecated functionality from the '${getActionId()}' action. Consult the Job Summary for more details.`
|
|
)
|
|
for (const deprecation of recordedDeprecations) {
|
|
core.info(`DEPRECATION: ${deprecation.message}. See ${deprecation.getDocumentationLink()}`)
|
|
}
|
|
}
|
|
}
|
|
|
|
export function saveDeprecationState(): void {
|
|
core.saveState('deprecations', JSON.stringify(recordedDeprecations))
|
|
}
|
|
|
|
export function restoreDeprecationState(): void {
|
|
const stringRep = core.getState('deprecations')
|
|
if (stringRep === '') {
|
|
return
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
JSON.parse(stringRep).forEach((obj: any) => {
|
|
recordedDeprecations.push(new Deprecation(obj.message))
|
|
})
|
|
}
|