diff --git a/.github/workflows/upstream-adf.yml b/.github/workflows/upstream-adf.yml index de8ebbc04..2b5986c6c 100644 --- a/.github/workflows/upstream-adf.yml +++ b/.github/workflows/upstream-adf.yml @@ -30,11 +30,11 @@ jobs: github-token: ${{ secrets.BOT_GITHUB_TOKEN }} script: | 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('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('latestJSVersion', latestJSVersion?.name); if (hasNewADFVersion === 'true' || hasNewJSVersion === 'true' ) { diff --git a/scripts/gh/update/latest-version-of.js b/scripts/gh/update/latest-version-of.js index 96d4cdf60..b5fb3d4a8 100644 --- a/scripts/gh/update/latest-version-of.js +++ b/scripts/gh/update/latest-version-of.js @@ -2,7 +2,7 @@ function inDays(d1, d2) { 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 dependencyFullName = `@${organization}/${dependencyName}`; const pkg = require('../../../package.json'); @@ -10,24 +10,38 @@ module.exports = async ({github, dependencyName}) => { const localVersion = pkg.dependencies[dependencyFullName]; const { data: availablePackages } = await github.rest.packages.getAllPackageVersionsForPackageOwnedByOrg({ - package_type: 'npm', - package_name: dependencyName, - org: organization + package_type: 'npm', + package_name: dependencyName, + 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) { - 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}; + if (latestPkgTag !== 'alpha') { + const alphaPackageVersion = tagsType.find((tag) => tag.includes('alpha'))?.split(':')[1].trim(); + latestPkgToUpdate = availablePackages.find((item) => item.name === alphaPackageVersion); } -} + 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 }; + } +};