allow min pre release versions to be set
This commit is contained in:
16
README.md
16
README.md
@@ -12,7 +12,7 @@ This action deletes versions of a package from [GitHub Packages](https://github.
|
|||||||
* Delete version(s) of a package that is hosted in a different repo than the one executing the workflow
|
* Delete version(s) of a package that is hosted in a different repo than the one executing the workflow
|
||||||
* Specify a minimum number of latest package versions to not get deleted.
|
* Specify a minimum number of latest package versions to not get deleted.
|
||||||
* Ignore some versions based on name and delete remaining versions.
|
* Ignore some versions based on name and delete remaining versions.
|
||||||
* Delete all pre-release versions
|
* Delete only pre-release versions
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
@@ -43,14 +43,15 @@ This action deletes versions of a package from [GitHub Packages](https://github.
|
|||||||
num-old-versions-to-delete:
|
num-old-versions-to-delete:
|
||||||
|
|
||||||
# The min number of latest versions to never delete.
|
# The min number of latest versions to never delete.
|
||||||
# Defaults to 1.
|
# Defaults to 0.
|
||||||
min-versions-to-keep:
|
min-versions-to-keep:
|
||||||
|
|
||||||
# The package versions to ignore exclude from deletion.
|
# The package versions to ignore exclude from deletion.
|
||||||
# By default nothing is ignored"
|
# By default nothing is ignored"
|
||||||
ignore-versions:
|
ignore-versions:
|
||||||
|
|
||||||
# If true it will delete all the pre-release versions upto 100 at once.
|
# If true it will delete only the pre-release versions.
|
||||||
|
# The number of pre-release versions to kep can be set by using `min-versions-to-keep` value with this.
|
||||||
# Defaults to false.
|
# Defaults to false.
|
||||||
delete-only-pre-release-versions:
|
delete-only-pre-release-versions:
|
||||||
|
|
||||||
@@ -75,7 +76,7 @@ This action deletes versions of a package from [GitHub Packages](https://github.
|
|||||||
- [Delete oldest x number of versions and keeping y latest versions of a package hosted in the same repo as the workflow](#delete-oldest-x-number-of-versions-and-keeping-y-latest-versions-of-a-package-hosted-in-the-same-repo-as-the-workflow)
|
- [Delete oldest x number of versions and keeping y latest versions of a package hosted in the same repo as the workflow](#delete-oldest-x-number-of-versions-and-keeping-y-latest-versions-of-a-package-hosted-in-the-same-repo-as-the-workflow)
|
||||||
- [Delete oldest x number of versions and keeping y latest versions of a package hosted in a different repo than the workflow](#delete-oldest-x-number-of-versions-and-keeping-y-latest-versions-of-a-package-hosted-in-a-different-repo-than-the-workflow)
|
- [Delete oldest x number of versions and keeping y latest versions of a package hosted in a different repo than the workflow](#delete-oldest-x-number-of-versions-and-keeping-y-latest-versions-of-a-package-hosted-in-a-different-repo-than-the-workflow)
|
||||||
- [Delete oldest x number of versions while ignoring particular package versions in the same repo as the workflow](#delete-oldest-x-number-of-versions-while-ignoring-particular-package-versions-in-the-same-repo-as-the-workflow)
|
- [Delete oldest x number of versions while ignoring particular package versions in the same repo as the workflow](#delete-oldest-x-number-of-versions-while-ignoring-particular-package-versions-in-the-same-repo-as-the-workflow)
|
||||||
- [Delete all pre-release package versions in the same repo as the workflow](#delete-all-pre-release-package-versions-in-the-same-repo-as-the-workflow)
|
- [Delete only pre-release package versions except x no of pre-release package versions in the same repo as the workflow](#delete-only-pre-release-package-versions-except-x-no-of-pre-release-package-versions-in-the-same-repo-as-the-workflow)
|
||||||
|
|
||||||
|
|
||||||
### Delete a specific version of a package hosted in the same repo as the workflow
|
### Delete a specific version of a package hosted in the same repo as the workflow
|
||||||
@@ -279,18 +280,19 @@ Delete 3 oldest versions excluding major versions as per semver is the same repo
|
|||||||
ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$'
|
ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Delete all pre-release package versions in the same repo as the workflow
|
### Delete only pre-release package versions except x no of pre-release package versions in the same repo as the workflow
|
||||||
|
|
||||||
To delete all pre release package versions in the same repo as the workflow the __package-name__ and __delete-only-pre-release-versions__ inputs are required.
|
To delete all pre release package versions except x no of pre-release package versions in the same repo as the workflow the __package-name__ and __delete-only-pre-release-versions__ inputs are required.
|
||||||
|
|
||||||
__Example__
|
__Example__
|
||||||
|
|
||||||
Delete all pre-release package versions in the same repo as the workflow
|
Delete all pre-release package versions except latest 10 in the same repo as the workflow
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/delete-package-versions@v1
|
- uses: actions/delete-package-versions@v1
|
||||||
with:
|
with:
|
||||||
package-name: 'test-package'
|
package-name: 'test-package'
|
||||||
|
min-versions-to-keep: 10
|
||||||
delete-only-pre-release-versions: "true"
|
delete-only-pre-release-versions: "true"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ inputs:
|
|||||||
min-versions-to-keep:
|
min-versions-to-keep:
|
||||||
description: >
|
description: >
|
||||||
Number of versions to keep starting with the latest version
|
Number of versions to keep starting with the latest version
|
||||||
|
Defaults to 0.
|
||||||
required: false
|
required: false
|
||||||
default: "1"
|
default: "0"
|
||||||
|
|
||||||
ignore-versions:
|
ignore-versions:
|
||||||
description: >
|
description: >
|
||||||
@@ -49,8 +50,8 @@ inputs:
|
|||||||
|
|
||||||
delete-only-pre-release-versions:
|
delete-only-pre-release-versions:
|
||||||
description: >
|
description: >
|
||||||
Deletes all the pre-release versions upto 100.
|
Deletes only pre-release versions upto. The number of pre-release versions to keep can be specified by min-versions-to-keep.
|
||||||
When this is set min-versions-to-keep, num-old-versions-to-delete and ignore-versions will not be taken into account.
|
When this is set num-old-versions-to-delete and ignore-versions will not be taken into account.
|
||||||
By default this is set to false
|
By default this is set to false
|
||||||
required: false
|
required: false
|
||||||
default: "false"
|
default: "false"
|
||||||
|
|||||||
29
dist/index.js
vendored
29
dist/index.js
vendored
@@ -34,12 +34,22 @@ function getVersionIds(input) {
|
|||||||
if (input.hasOldestVersionQueryInfo()) {
|
if (input.hasOldestVersionQueryInfo()) {
|
||||||
return version_1.getOldestVersions(input.owner, input.repo, input.packageName, input.numOldVersionsToDelete + input.minVersionsToKeep, input.token).pipe(operators_1.map(versionInfo => {
|
return version_1.getOldestVersions(input.owner, input.repo, input.packageName, input.numOldVersionsToDelete + input.minVersionsToKeep, input.token).pipe(operators_1.map(versionInfo => {
|
||||||
const numberVersionsToDelete = versionInfo.length - input.minVersionsToKeep;
|
const numberVersionsToDelete = versionInfo.length - input.minVersionsToKeep;
|
||||||
return numberVersionsToDelete <= 0
|
if (input.deletePreReleaseVersions == 'true') {
|
||||||
? []
|
return numberVersionsToDelete <= 0
|
||||||
: versionInfo
|
? []
|
||||||
.filter(info => !input.ignoreVersions.test(info.version))
|
: versionInfo
|
||||||
.map(info => info.id)
|
.filter(info => !input.ignoreVersions.test(info.version))
|
||||||
.slice(0, numberVersionsToDelete);
|
.map(info => info.id)
|
||||||
|
.slice(0, -input.minVersionsToKeep);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return numberVersionsToDelete <= 0
|
||||||
|
? []
|
||||||
|
: 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");
|
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");
|
||||||
@@ -91,8 +101,9 @@ class Input {
|
|||||||
this.deletePreReleaseVersions = validatedParams.deletePreReleaseVersions;
|
this.deletePreReleaseVersions = validatedParams.deletePreReleaseVersions;
|
||||||
this.token = validatedParams.token;
|
this.token = validatedParams.token;
|
||||||
if (this.deletePreReleaseVersions == 'true') {
|
if (this.deletePreReleaseVersions == 'true') {
|
||||||
this.numOldVersionsToDelete = 100;
|
this.numOldVersionsToDelete = 100 - this.minVersionsToKeep;
|
||||||
this.minVersionsToKeep = 0;
|
this.minVersionsToKeep =
|
||||||
|
this.minVersionsToKeep > 0 ? this.minVersionsToKeep : 1;
|
||||||
this.ignoreVersions = new RegExp('^(0|[1-9]\\d*)((\\.(0|[1-9]\\d*))*)$');
|
this.ignoreVersions = new RegExp('^(0|[1-9]\\d*)((\\.(0|[1-9]\\d*))*)$');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40322,7 +40333,7 @@ function getActionInput() {
|
|||||||
numOldVersionsToDelete: Number(core_1.getInput('num-old-versions-to-delete')),
|
numOldVersionsToDelete: Number(core_1.getInput('num-old-versions-to-delete')),
|
||||||
minVersionsToKeep: Number(core_1.getInput('min-versions-to-keep')),
|
minVersionsToKeep: Number(core_1.getInput('min-versions-to-keep')),
|
||||||
ignoreVersions: RegExp(core_1.getInput('ignore-versions')),
|
ignoreVersions: RegExp(core_1.getInput('ignore-versions')),
|
||||||
deletePreReleaseVersions: core_1.getInput('delete-only-pre-release-versions'),
|
deletePreReleaseVersions: core_1.getInput('delete-only-pre-release-versions').toLowerCase(),
|
||||||
token: core_1.getInput('token')
|
token: core_1.getInput('token')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,22 @@ export function getVersionIds(input: Input): Observable<string[]> {
|
|||||||
map(versionInfo => {
|
map(versionInfo => {
|
||||||
const numberVersionsToDelete =
|
const numberVersionsToDelete =
|
||||||
versionInfo.length - input.minVersionsToKeep
|
versionInfo.length - input.minVersionsToKeep
|
||||||
return numberVersionsToDelete <= 0
|
|
||||||
? []
|
if (input.deletePreReleaseVersions == 'true') {
|
||||||
: versionInfo
|
return numberVersionsToDelete <= 0
|
||||||
.filter(info => !input.ignoreVersions.test(info.version))
|
? []
|
||||||
.map(info => info.id)
|
: versionInfo
|
||||||
.slice(0, numberVersionsToDelete)
|
.filter(info => !input.ignoreVersions.test(info.version))
|
||||||
|
.map(info => info.id)
|
||||||
|
.slice(0, -input.minVersionsToKeep)
|
||||||
|
} else {
|
||||||
|
return numberVersionsToDelete <= 0
|
||||||
|
? []
|
||||||
|
: versionInfo
|
||||||
|
.filter(info => !input.ignoreVersions.test(info.version))
|
||||||
|
.map(info => info.id)
|
||||||
|
.slice(0, numberVersionsToDelete)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,9 @@ export class Input {
|
|||||||
this.token = validatedParams.token
|
this.token = validatedParams.token
|
||||||
|
|
||||||
if (this.deletePreReleaseVersions == 'true') {
|
if (this.deletePreReleaseVersions == 'true') {
|
||||||
this.numOldVersionsToDelete = 100
|
this.numOldVersionsToDelete = 100 - this.minVersionsToKeep
|
||||||
this.minVersionsToKeep = 0
|
this.minVersionsToKeep =
|
||||||
|
this.minVersionsToKeep > 0 ? this.minVersionsToKeep : 1
|
||||||
this.ignoreVersions = new RegExp('^(0|[1-9]\\d*)((\\.(0|[1-9]\\d*))*)$')
|
this.ignoreVersions = new RegExp('^(0|[1-9]\\d*)((\\.(0|[1-9]\\d*))*)$')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ function getActionInput(): Input {
|
|||||||
numOldVersionsToDelete: Number(getInput('num-old-versions-to-delete')),
|
numOldVersionsToDelete: Number(getInput('num-old-versions-to-delete')),
|
||||||
minVersionsToKeep: Number(getInput('min-versions-to-keep')),
|
minVersionsToKeep: Number(getInput('min-versions-to-keep')),
|
||||||
ignoreVersions: RegExp(getInput('ignore-versions')),
|
ignoreVersions: RegExp(getInput('ignore-versions')),
|
||||||
deletePreReleaseVersions: getInput('delete-only-pre-release-versions'),
|
deletePreReleaseVersions: getInput(
|
||||||
|
'delete-only-pre-release-versions'
|
||||||
|
).toLowerCase(),
|
||||||
token: getInput('token')
|
token: getInput('token')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user