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:
@@ -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
@@ -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
@@ -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()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user