Skip to content

Commit 180c4e1

Browse files
committed
Delete obsolete versions
1 parent c48d311 commit 180c4e1

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Delete NPM Versions
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
7+
jobs:
8+
delete-npm-versions:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- name: Checkout repository
13+
uses: actions/checkout@v2
14+
15+
- name: Set up Node.js
16+
uses: actions/setup-node@v3
17+
with:
18+
node-version: 'lts/*'
19+
20+
- name: Run deleteVersions script
21+
env:
22+
PACKAGE_NAME: sfdx-hardis
23+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
24+
run: |
25+
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
26+
node deleteVersions.js

deleteVersions.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
const { execSync } = require('child_process');
2+
3+
function getPackageVersions(packageName) {
4+
const result = execSync(`npm view ${packageName} versions --json`);
5+
return JSON.parse(result);
6+
}
7+
8+
function deletePackageVersion(packageName, version) {
9+
try {
10+
execSync(`npm unpublish ${packageName}@${version}`);
11+
console.log(`Successfully deleted ${packageName}@${version}`);
12+
} catch (error) {
13+
console.error(`Failed to delete ${packageName}@${version}: ${error.message}`);
14+
}
15+
}
16+
17+
function main() {
18+
const packageName = process.env.PACKAGE_NAME;
19+
if (!packageName) {
20+
console.error('PACKAGE_NAME environment variable is not set');
21+
process.exit(1);
22+
}
23+
24+
const versions = getPackageVersions(packageName);
25+
const versionsToDelete = versions.filter(version => /alpha|beta|canary/.test(version));
26+
27+
console.log(JSON.stringify(versionsToDelete,null,2));
28+
// versionsToDelete.forEach(version => deletePackageVersion(packageName, version));
29+
}
30+
31+
main();

0 commit comments

Comments
 (0)