From 4ec126b8cc4d4ec2a660bfe9d74cede712277034 Mon Sep 17 00:00:00 2001 From: Namrata Jha Date: Fri, 12 Nov 2021 03:46:59 +0000 Subject: [PATCH] add ignore versions property --- action.yml | 9 ++++++++- dist/index.js | 8 +++++++- src/delete.ts | 5 ++++- src/input.ts | 4 ++++ src/main.ts | 1 + 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/action.yml b/action.yml index f24941e..75ea4f7 100644 --- a/action.yml +++ b/action.yml @@ -39,7 +39,14 @@ inputs: Number of versions to keep starting with the latest version required: false default: "1" - + + ignore-versions: + description: > + Comma seperated regex patterns of versions to ignore. + Defaults to all major release versions and only deletes pre-release versions. + required: false + default: "^[\d*]+.[\d*]+.[0*]+$" + token: description: > Token with the necessary scopes to delete package versions. diff --git a/dist/index.js b/dist/index.js index 1a763d2..a4ea3ea 100644 --- a/dist/index.js +++ b/dist/index.js @@ -36,7 +36,10 @@ function getVersionIds(input) { const numberVersionsToDelete = versionInfo.length - input.minVersionsToKeep; return numberVersionsToDelete <= 0 ? [] - : versionInfo.slice(0, numberVersionsToDelete).map(info => info.id); + : versionInfo + .filter(info => !input.ignoreVersions.test(info.version)) + .map(info => info.id) + .slice(0, numberVersionsToDelete); })); } return rxjs_1.throwError("Could not get packageVersionIds. Explicitly specify using the 'package-version-ids' input or provide the 'package-name' and 'num-old-versions-to-delete' inputs to dynamically retrieve oldest versions"); @@ -71,6 +74,7 @@ const defaultParams = { packageName: '', numOldVersionsToDelete: 0, minVersionsToKeep: 0, + ignoreVersions: new RegExp(''), token: '' }; class Input { @@ -82,6 +86,7 @@ class Input { this.packageName = validatedParams.packageName; this.numOldVersionsToDelete = validatedParams.numOldVersionsToDelete; this.minVersionsToKeep = validatedParams.minVersionsToKeep; + this.ignoreVersions = validatedParams.ignoreVersions; this.token = validatedParams.token; } hasOldestVersionQueryInfo() { @@ -40309,6 +40314,7 @@ function getActionInput() { packageName: core_1.getInput('package-name'), numOldVersionsToDelete: Number(core_1.getInput('num-old-versions-to-delete')), minVersionsToKeep: Number(core_1.getInput('min-versions-to-keep')), + ignoreVersions: RegExp(core_1.getInput('ignore-versions')), token: core_1.getInput('token') }); } diff --git a/src/delete.ts b/src/delete.ts index 24e18f1..18cacce 100644 --- a/src/delete.ts +++ b/src/delete.ts @@ -21,7 +21,10 @@ export function getVersionIds(input: Input): Observable { versionInfo.length - input.minVersionsToKeep return numberVersionsToDelete <= 0 ? [] - : versionInfo.slice(0, numberVersionsToDelete).map(info => info.id) + : versionInfo + .filter(info => !input.ignoreVersions.test(info.version)) + .map(info => info.id) + .slice(0, numberVersionsToDelete) }) ) } diff --git a/src/input.ts b/src/input.ts index 2f8368d..cb135cf 100644 --- a/src/input.ts +++ b/src/input.ts @@ -5,6 +5,7 @@ export interface InputParams { packageName?: string numOldVersionsToDelete?: number minVersionsToKeep?: number + ignoreVersions?: RegExp token?: string } @@ -15,6 +16,7 @@ const defaultParams = { packageName: '', numOldVersionsToDelete: 0, minVersionsToKeep: 0, + ignoreVersions: new RegExp(''), token: '' } @@ -25,6 +27,7 @@ export class Input { packageName: string numOldVersionsToDelete: number minVersionsToKeep: number + ignoreVersions: RegExp token: string constructor(params?: InputParams) { @@ -36,6 +39,7 @@ export class Input { this.packageName = validatedParams.packageName this.numOldVersionsToDelete = validatedParams.numOldVersionsToDelete this.minVersionsToKeep = validatedParams.minVersionsToKeep + this.ignoreVersions = validatedParams.ignoreVersions this.token = validatedParams.token } diff --git a/src/main.ts b/src/main.ts index f2887d0..5c78529 100644 --- a/src/main.ts +++ b/src/main.ts @@ -15,6 +15,7 @@ function getActionInput(): Input { packageName: getInput('package-name'), numOldVersionsToDelete: Number(getInput('num-old-versions-to-delete')), minVersionsToKeep: Number(getInput('min-versions-to-keep')), + ignoreVersions: RegExp(getInput('ignore-versions')), token: getInput('token') }) }