[ACS-8659] Refine ADF upstream to pick only 'alpha' versions (#4049)

* Investigate GH package versions response

* Retrieve package data

* Get proper package type

* Pass required exec param

* Use proper dependency name

* Code cleanup

* [ACS-8659] Prettier fixes
This commit is contained in:
MichalKinas 2024-08-23 15:06:23 +02:00 committed by GitHub
parent af957ef8b0
commit 86fb96579b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 33 additions and 19 deletions

View File

@ -30,11 +30,11 @@ jobs:
github-token: ${{ secrets.BOT_GITHUB_TOKEN }} github-token: ${{ secrets.BOT_GITHUB_TOKEN }}
script: | script: |
const getLatestVersionOf = require('./scripts/gh/update/latest-version-of.js'); const getLatestVersionOf = require('./scripts/gh/update/latest-version-of.js');
const { hasNewVersion: hasNewADFVersion , remoteVersion: latestADFVersion } = await getLatestVersionOf({github, dependencyName: 'adf-core'}); const { hasNewVersion: hasNewADFVersion , remoteVersion: latestADFVersion } = await getLatestVersionOf({exec, github, dependencyName: 'adf-core'});
console.log('hasNewADFVersion', hasNewADFVersion); console.log('hasNewADFVersion', hasNewADFVersion);
console.log('latestADFVersion', latestADFVersion?.name); console.log('latestADFVersion', latestADFVersion?.name);
const { hasNewVersion: hasNewJSVersion, remoteVersion: latestJSVersion } = await getLatestVersionOf({github, dependencyName: 'js-api'}); const { hasNewVersion: hasNewJSVersion, remoteVersion: latestJSVersion } = await getLatestVersionOf({exec, github, dependencyName: 'js-api'});
console.log('hasNewJSVersion', hasNewJSVersion); console.log('hasNewJSVersion', hasNewJSVersion);
console.log('latestJSVersion', latestJSVersion?.name); console.log('latestJSVersion', latestJSVersion?.name);
if (hasNewADFVersion === 'true' || hasNewJSVersion === 'true' ) { if (hasNewADFVersion === 'true' || hasNewJSVersion === 'true' ) {

View File

@ -2,7 +2,7 @@ function inDays(d1, d2) {
return Math.floor((d2.getTime() - d1.getTime()) / (24 * 3600 * 1000)); return Math.floor((d2.getTime() - d1.getTime()) / (24 * 3600 * 1000));
} }
module.exports = async ({github, dependencyName}) => { module.exports = async ({ exec, github, dependencyName }) => {
const organization = 'alfresco'; const organization = 'alfresco';
const dependencyFullName = `@${organization}/${dependencyName}`; const dependencyFullName = `@${organization}/${dependencyName}`;
const pkg = require('../../../package.json'); const pkg = require('../../../package.json');
@ -10,24 +10,38 @@ module.exports = async ({github, dependencyName}) => {
const localVersion = pkg.dependencies[dependencyFullName]; const localVersion = pkg.dependencies[dependencyFullName];
const { data: availablePackages } = await github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg({ const { data: availablePackages } = await github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg({
package_type: 'npm', package_type: 'npm',
package_name: dependencyName, package_name: dependencyName,
org: organization org: organization
}); });
const latestPkgToUpdate = availablePackages[0]; let latestPkgToUpdate = availablePackages[0];
const options = {};
let packageDistTag = '';
options.listeners = {
stdout: (data) => {
packageDistTag += data.toString();
}
};
await exec.exec(`npm dist-tag ls @alfresco/${dependencyName}`, [], options);
const tagsType = packageDistTag.split('\n');
const latestPkgTag = tagsType.find((tag) => tag.includes(latestPkgToUpdate.name))?.split(':')[0];
if (localVersion === latestPkgToUpdate?.name) { if (latestPkgTag !== 'alpha') {
return { hasNewVersion: 'false' }; const alphaPackageVersion = tagsType.find((tag) => tag.includes('alpha'))?.split(':')[1].trim();
} else { latestPkgToUpdate = availablePackages.find((item) => item.name === alphaPackageVersion);
const findLocalVersionOnRemote = availablePackages.find((item) => item.name === localVersion);
let rangeInDays = 'N/A'
if (findLocalVersionOnRemote !== undefined) {
const creationLocal = new Date(findLocalVersionOnRemote.created_at);
const creationLatest = new Date(latestPkgToUpdate.created_at);
rangeInDays = inDays(creationLocal, creationLatest);
}
return { hasNewVersion: 'true', remoteVersion: { name: latestPkgToUpdate?.name, rangeInDays } , localVersion};
} }
} if (localVersion === latestPkgToUpdate?.name) {
return { hasNewVersion: 'false' };
} else {
const findLocalVersionOnRemote = availablePackages.find((item) => item.name === localVersion);
let rangeInDays = 'N/A';
if (findLocalVersionOnRemote !== undefined) {
const creationLocal = new Date(findLocalVersionOnRemote.created_at);
const creationLatest = new Date(latestPkgToUpdate.created_at);
rangeInDays = inDays(creationLocal, creationLatest);
}
return { hasNewVersion: 'true', remoteVersion: { name: latestPkgToUpdate?.name, rangeInDays }, localVersion };
}
};