@o3r/artifactory-tools 11.6.0-prerelease.7 → 11.6.0-prerelease.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +23 -14
- package/schematics/ng-add/index.d.ts +0 -2
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +0 -2
- package/src/cli/artifact-cleaner.js +4 -5
- package/src/cli/artifact-cleaner.js.map +1 -1
- package/src/cli/pr-artifact-cleaner.js +13 -14
- package/src/cli/pr-artifact-cleaner.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/artifactory-tools",
|
|
3
|
-
"version": "11.6.0-prerelease.
|
|
3
|
+
"version": "11.6.0-prerelease.9",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -29,45 +29,54 @@
|
|
|
29
29
|
"winston": "^3.8.2"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@angular-devkit/schematics": "~18.2.0"
|
|
32
|
+
"@angular-devkit/schematics": "~18.2.0",
|
|
33
|
+
"@o3r/telemetry": "^11.6.0-prerelease.9"
|
|
33
34
|
},
|
|
34
35
|
"peerDependenciesMeta": {
|
|
35
36
|
"@angular-devkit/schematics": {
|
|
36
37
|
"optional": true
|
|
38
|
+
},
|
|
39
|
+
"@o3r/telemetry": {
|
|
40
|
+
"optional": true
|
|
37
41
|
}
|
|
38
42
|
},
|
|
39
43
|
"devDependencies": {
|
|
40
44
|
"@angular-devkit/core": "~18.2.0",
|
|
41
45
|
"@angular-devkit/schematics": "~18.2.0",
|
|
42
|
-
"@angular-eslint/eslint-plugin": "~18.3.0",
|
|
43
46
|
"@babel/core": "~7.26.0",
|
|
44
47
|
"@babel/preset-typescript": "~7.26.0",
|
|
45
48
|
"@compodoc/compodoc": "^1.1.19",
|
|
49
|
+
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
|
|
46
50
|
"@nx/eslint-plugin": "~19.5.0",
|
|
47
51
|
"@nx/jest": "~19.5.0",
|
|
48
|
-
"@o3r/build-helpers": "^11.6.0-prerelease.
|
|
49
|
-
"@o3r/eslint-plugin": "^11.6.0-prerelease.
|
|
50
|
-
"@o3r/telemetry": "^11.6.0-prerelease.
|
|
51
|
-
"@stylistic/eslint-plugin-ts": "~2.
|
|
52
|
+
"@o3r/build-helpers": "^11.6.0-prerelease.9",
|
|
53
|
+
"@o3r/eslint-plugin": "^11.6.0-prerelease.9",
|
|
54
|
+
"@o3r/telemetry": "^11.6.0-prerelease.9",
|
|
55
|
+
"@stylistic/eslint-plugin-ts": "~2.7.0",
|
|
52
56
|
"@types/fs-extra": "^11.0.0",
|
|
53
57
|
"@types/jest": "~29.5.2",
|
|
54
58
|
"@types/node": "^20.0.0",
|
|
55
|
-
"@typescript-eslint/
|
|
56
|
-
"
|
|
57
|
-
"@typescript-eslint/utils": "^7.14.1",
|
|
59
|
+
"@typescript-eslint/parser": "~8.12.2",
|
|
60
|
+
"angular-eslint": "~18.4.0",
|
|
58
61
|
"cpy-cli": "^5.0.0",
|
|
59
|
-
"eslint": "
|
|
62
|
+
"eslint": "~9.14.0",
|
|
60
63
|
"eslint-import-resolver-node": "^0.3.9",
|
|
64
|
+
"eslint-import-resolver-typescript": "^3.6.3",
|
|
65
|
+
"eslint-plugin-import": "^2.31.0",
|
|
66
|
+
"eslint-plugin-import-newlines": "^1.4.0",
|
|
61
67
|
"eslint-plugin-jest": "~28.8.0",
|
|
62
|
-
"eslint-plugin-jsdoc": "~
|
|
68
|
+
"eslint-plugin-jsdoc": "~50.2.0",
|
|
63
69
|
"eslint-plugin-prefer-arrow": "~1.2.3",
|
|
64
|
-
"eslint-plugin-unicorn": "^
|
|
70
|
+
"eslint-plugin-unicorn": "^56.0.0",
|
|
71
|
+
"eslint-plugin-unused-imports": "^4.1.4",
|
|
72
|
+
"globals": "^15.9.0",
|
|
65
73
|
"jest": "~29.7.0",
|
|
66
74
|
"jest-junit": "~16.0.0",
|
|
67
75
|
"nx": "~19.5.0",
|
|
68
76
|
"ts-jest": "~29.2.0",
|
|
69
77
|
"ts-node": "~10.9.2",
|
|
70
|
-
"typescript": "~5.5.4"
|
|
78
|
+
"typescript": "~5.5.4",
|
|
79
|
+
"typescript-eslint": "~8.12.2"
|
|
71
80
|
},
|
|
72
81
|
"engines": {
|
|
73
82
|
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,IAAI,EACL,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAG5B"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { program } from 'commander';
|
|
2
|
+
import { program, } from 'commander';
|
|
3
3
|
import * as winston from 'winston';
|
|
4
4
|
program
|
|
5
5
|
.description('Clean old artifacts from artifactory repositories')
|
|
6
6
|
.requiredOption('--artifactory-url <artifactoryUrl>', 'Artifactory URL')
|
|
7
7
|
.requiredOption('-b, --basicAuth <basicAuth>', 'Base64 encoding of username:password (password already encrypted from artifactory UI)')
|
|
8
8
|
.requiredOption('-r, --repositories <repositories>', 'Artifact repositories to clean up (comma separated) ex: \'repo1,repo2\'', (repos) => repos.split(','))
|
|
9
|
-
.option('-d, --duration-kept <durationKept>', 'All artifacts older than this value (in ms) will be deleted. (Default: 604800000 ms, i.e., 7 days)', (v) => +v,
|
|
9
|
+
.option('-d, --duration-kept <durationKept>', 'All artifacts older than this value (in ms) will be deleted. (Default: 604800000 ms, i.e., 7 days)', (v) => +v, 604_800_000)
|
|
10
10
|
.option('-t, --type-filter <typeFilter>', 'List of artifact types that should be deleted (comma separated) ex: \'jar,tgz\' (Default: [\'tgz\',\'json\'])', (type) => type.split(','), ['tgz', 'json'])
|
|
11
11
|
.option('--dry-run <dryRun>', 'List all files that would be deleted without actually deleting them', false)
|
|
12
12
|
.parse(process.argv);
|
|
@@ -33,13 +33,12 @@ const matchFilter = (fullUrl, types) => {
|
|
|
33
33
|
let url = opts.artifactoryUrl;
|
|
34
34
|
const options = {
|
|
35
35
|
headers: {
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
37
36
|
Authorization: 'Basic ' + opts.basicAuth
|
|
38
37
|
}
|
|
39
38
|
};
|
|
40
39
|
const limitTimestampToKeepOldArtifact = Date.now() - opts.durationKept;
|
|
41
|
-
url += (url.endsWith('/') ? '' : '/')
|
|
42
|
-
`api/search/usage?notUsedSince=${limitTimestampToKeepOldArtifact}&createdBefore=${limitTimestampToKeepOldArtifact}&repos=${opts.repositories.join(',')}`;
|
|
40
|
+
url += (url.endsWith('/') ? '' : '/')
|
|
41
|
+
+ `api/search/usage?notUsedSince=${limitTimestampToKeepOldArtifact}&createdBefore=${limitTimestampToKeepOldArtifact}&repos=${opts.repositories.join(',')}`;
|
|
43
42
|
logger.info(`Url called : ${url}`);
|
|
44
43
|
const run = async () => {
|
|
45
44
|
logger.info(`Requesting old artifacts using ${url}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-cleaner.js","sourceRoot":"","sources":["../../../src/cli/artifact-cleaner.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"artifact-cleaner.js","sourceRoot":"","sources":["../../../src/cli/artifact-cleaner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { program } from 'commander';
|
|
2
|
+
import { program, } from 'commander';
|
|
3
3
|
import * as winston from 'winston';
|
|
4
4
|
program
|
|
5
5
|
.description('Clean pr artifacts from artifactory repositories')
|
|
@@ -39,9 +39,9 @@ if (programOptions.basicAuth && programOptions.apiKey) {
|
|
|
39
39
|
logger.error('Only one authentication method should be used at a time. Please provide only the apiKey (-a) or the basicAuth (-b) but not both.');
|
|
40
40
|
process.exit(1);
|
|
41
41
|
}
|
|
42
|
-
const authHeader = programOptions.basicAuth
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const authHeader = programOptions.basicAuth
|
|
43
|
+
? { Authorization: `Basic ${programOptions.basicAuth}` }
|
|
44
|
+
: { 'X-JFrog-Art-Api': programOptions.apiKey };
|
|
45
45
|
let url = programOptions.artifactoryUrl;
|
|
46
46
|
url += (url.endsWith('/') ? '' : '/') + 'api/search/aql';
|
|
47
47
|
const ageInDays = programOptions.durationKept;
|
|
@@ -64,7 +64,6 @@ const fetchOptions = {
|
|
|
64
64
|
.sort({"$desc" : ["path","name"]})
|
|
65
65
|
.limit(10000)`
|
|
66
66
|
};
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
68
67
|
logger.debug(`AQL search executed : ${fetchOptions.body}`);
|
|
69
68
|
logger.info(`Url called : ${url}`);
|
|
70
69
|
const run = async () => {
|
|
@@ -87,12 +86,9 @@ const run = async () => {
|
|
|
87
86
|
for (const result of sortedResult) {
|
|
88
87
|
const splitPath = result.name.split('.');
|
|
89
88
|
const mapId = splitPath.slice(0, -2).join('.');
|
|
90
|
-
const currentBuildNumber = +splitPath
|
|
89
|
+
const currentBuildNumber = +splitPath.at(-2);
|
|
91
90
|
const buildNumbers = mapOfKeptItems.get(mapId);
|
|
92
|
-
if (
|
|
93
|
-
mapOfKeptItems.set(mapId, [currentBuildNumber]);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
91
|
+
if (buildNumbers) {
|
|
96
92
|
buildNumbers.sort();
|
|
97
93
|
let isBuildNumberAlreadyInMap = false;
|
|
98
94
|
let isBuildNumberHigherThanExisting = true;
|
|
@@ -118,16 +114,19 @@ const run = async () => {
|
|
|
118
114
|
buildNumbers.sort();
|
|
119
115
|
mapOfKeptItems.set(mapId, buildNumbers);
|
|
120
116
|
const keptBuildNumbers = mapOfKeptResult.get(`${mapId}${currentBuildNumber}`);
|
|
121
|
-
if (
|
|
122
|
-
mapOfKeptResult.set(`${mapId}${currentBuildNumber}`, [result]);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
117
|
+
if (keptBuildNumbers) {
|
|
125
118
|
keptBuildNumbers.push(result);
|
|
126
119
|
mapOfKeptResult.set(`${mapId}${currentBuildNumber}`, keptBuildNumbers);
|
|
127
120
|
}
|
|
121
|
+
else {
|
|
122
|
+
mapOfKeptResult.set(`${mapId}${currentBuildNumber}`, [result]);
|
|
123
|
+
}
|
|
128
124
|
}
|
|
129
125
|
}
|
|
130
126
|
}
|
|
127
|
+
else {
|
|
128
|
+
mapOfKeptItems.set(mapId, [currentBuildNumber]);
|
|
129
|
+
}
|
|
131
130
|
}
|
|
132
131
|
logger.debug('Map of build that will be kept: %o', mapOfKeptItems);
|
|
133
132
|
const filesToDelete = resultToDelete.map((data) => programOptions.artifactoryUrl + (programOptions.artifactoryUrl.endsWith('/') ? '' : '/') + repository + '/' + data.path + '/' + data.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-artifact-cleaner.js","sourceRoot":"","sources":["../../../src/cli/pr-artifact-cleaner.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"pr-artifact-cleaner.js","sourceRoot":"","sources":["../../../src/cli/pr-artifact-cleaner.ts"],"names":[],"mappings":"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"}
|