add delete-only-untagged-versions param (#94)

Add a new boolean parameter to action `delete-only-untagged-versions`. When true, only versions that do not have any tags will be deleted.
This commit is contained in:
Anupam
2023-03-03 16:42:34 +05:30
committed by GitHub
parent b9ed39f728
commit 029d95066b
10 changed files with 207 additions and 12 deletions
+5
View File
@@ -72,6 +72,11 @@ export function finalIds(input: Input): Observable<string[]> {
Then compute number of versions to delete (toDelete) based on the inputs.
*/
value = value.filter(info => !input.ignoreVersions.test(info.version))
if (input.deleteUntaggedVersions === 'true') {
value = value.filter(info => !info.tagged)
}
let toDelete = 0
if (input.minVersionsToKeep < 0) {
toDelete = Math.min(
+9 -1
View File
@@ -8,6 +8,7 @@ export interface InputParams {
ignoreVersions?: RegExp
token?: string
deletePreReleaseVersions?: string
deleteUntaggedVersions?: string
}
const defaultParams = {
@@ -19,7 +20,8 @@ const defaultParams = {
minVersionsToKeep: 0,
ignoreVersions: new RegExp(''),
deletePreReleaseVersions: '',
token: ''
token: '',
deleteUntaggedVersions: ''
}
export class Input {
@@ -33,6 +35,7 @@ export class Input {
deletePreReleaseVersions: string
token: string
numDeleted: number
deleteUntaggedVersions: string
constructor(params?: InputParams) {
const validatedParams: Required<InputParams> = {...defaultParams, ...params}
@@ -47,6 +50,7 @@ export class Input {
this.deletePreReleaseVersions = validatedParams.deletePreReleaseVersions
this.token = validatedParams.token
this.numDeleted = 0
this.deleteUntaggedVersions = validatedParams.deleteUntaggedVersions
}
hasOldestVersionQueryInfo(): boolean {
@@ -76,6 +80,10 @@ export class Input {
this.ignoreVersions = new RegExp('^(0|[1-9]\\d*)((\\.(0|[1-9]\\d*))*)$')
}
if (this.packageType.toLowerCase() !== 'container') {
this.deleteUntaggedVersions = 'false'
}
if (this.minVersionsToKeep >= 0) {
this.numOldVersionsToDelete = 0
}
+4 -1
View File
@@ -19,7 +19,10 @@ function getActionInput(): Input {
deletePreReleaseVersions: getInput(
'delete-only-pre-release-versions'
).toLowerCase(),
token: getInput('token')
token: getInput('token'),
deleteUntaggedVersions: getInput(
'delete-only-untagged-versions'
).toLowerCase()
})
}
+12 -1
View File
@@ -8,6 +8,7 @@ export interface RestVersionInfo {
id: number
version: string
created_at: string
tagged: boolean
}
export interface RestQueryInfo {
@@ -56,10 +57,20 @@ export function getOldestVersions(
map(response => {
const resp = {
versions: response.data.map((version: GetVersionsResponse[0]) => {
let tagged = false
if (
package_type === 'container' &&
version.metadata &&
version.metadata.container
) {
tagged = version.metadata.container.tags.length > 0
}
return {
id: version.id,
version: version.name,
created_at: version.created_at
created_at: version.created_at,
tagged
}
}),
page,