From 4ebf0833908d4cf5b6c0096bcb9d301bd0b957f7 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Sun, 18 Apr 2021 21:40:22 +0200 Subject: [PATCH 1/4] refactor: separate update generation --- .../lookup/__snapshots__/index.spec.ts.snap | 1 - .../repository/process/lookup/generate.ts | 68 ++++++++++++++++++ .../repository/process/lookup/index.ts | 70 ++++--------------- 3 files changed, 80 insertions(+), 59 deletions(-) create mode 100644 lib/workers/repository/process/lookup/generate.ts diff --git a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap index 35d60b78c71ea5..98398de478e94d 100644 --- a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap +++ b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap @@ -175,7 +175,6 @@ Object { Object { "newDigest": "4b825dc642cb6eb9a060e54bf8d69288fbee4904", "newValue": undefined, - "newVersion": undefined, "updateType": "digest", }, ], diff --git a/lib/workers/repository/process/lookup/generate.ts b/lib/workers/repository/process/lookup/generate.ts new file mode 100644 index 00000000000000..0c3d5976c6b041 --- /dev/null +++ b/lib/workers/repository/process/lookup/generate.ts @@ -0,0 +1,68 @@ +import { Release } from '../../../../datasource'; +import { logger } from '../../../../logger'; +import type { LookupUpdate } from '../../../../manager/types'; +import { VersioningApi } from '../../../../versioning'; +import { LookupUpdateConfig } from './types'; +import { getUpdateType } from './update-type'; + +export function generateUpdate( + config: LookupUpdateConfig, + versioning: VersioningApi, + currentVersion: string, + bucket: string, + release: Release +): LookupUpdate { + const newVersion = release.version; + const update: LookupUpdate = { + bucket, + newVersion, + newValue: null, + }; + const releaseFields = [ + 'checksumUrl', + 'downloadUrl', + 'newDigest', + 'releaseTimestamp', + ]; + for (const field of releaseFields) { + if (release[field] !== undefined) { + update[field] = release[field]; + } + } + const { currentValue, rangeStrategy } = config; + try { + update.newValue = versioning.getNewValue({ + currentValue, + rangeStrategy, + currentVersion, + newVersion, + }); + } catch (err) /* istanbul ignore next */ { + logger.warn( + { err, currentValue, rangeStrategy, currentVersion, newVersion }, + 'getNewValue error' + ); + update.newValue = currentValue; + } + update.newMajor = versioning.getMajor(newVersion); + update.newMinor = versioning.getMinor(newVersion); + update.updateType = + update.updateType || + getUpdateType(config, versioning, currentVersion, newVersion); + if (!versioning.isVersion(update.newValue)) { + update.isRange = true; + } + if (rangeStrategy === 'update-lockfile' && currentValue === update.newValue) { + update.isLockfileUpdate = true; + } + if ( + rangeStrategy === 'bump' && + versioning.matches(newVersion, currentValue) + ) { + update.isBump = true; + } + if (versioning.valueToVersion) { + update.newVersion = versioning.valueToVersion(update.newVersion); + } + return update; +} diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index 84b21acdc1e098..b39ee4cf1ff74b 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -10,7 +10,6 @@ import { } from '../../../../datasource'; import { logger } from '../../../../logger'; import { getRangeStrategy } from '../../../../manager'; -import type { LookupUpdate } from '../../../../manager/types'; import { SkipReason } from '../../../../types'; import { clone } from '../../../../util/clone'; import { applyPackageRules } from '../../../../util/package-rules'; @@ -18,9 +17,9 @@ import * as allVersioning from '../../../../versioning'; import { getBucket } from './bucket'; import { getCurrentVersion } from './current'; import { filterVersions } from './filter'; +import { generateUpdate } from './generate'; import { getRollbackUpdate } from './rollback'; import type { LookupUpdateConfig, UpdateResult } from './types'; -import { getUpdateType } from './update-type'; export async function lookupUpdates( inconfig: LookupUpdateConfig @@ -154,6 +153,9 @@ export async function lookupUpdates( allVersions.map((v) => v.version) ); res.currentVersion = currentVersion; + if (versioning.valueToVersion) { + res.currentVersion = versioning.valueToVersion(res.currentVersion); + } if ( currentVersion && rangeStrategy === 'pin' && @@ -209,25 +211,13 @@ export async function lookupUpdates( ); const release = sortedReleases.pop(); const newVersion = release.version; - const update: LookupUpdate = { - newVersion, - newValue: null, - }; - update.bucket = bucket; - try { - update.newValue = versioning.getNewValue({ - currentValue, - rangeStrategy, - currentVersion, - newVersion, - }); - } catch (err) /* istanbul ignore next */ { - logger.warn( - { err, currentValue, rangeStrategy, currentVersion, newVersion }, - 'getNewValue error' - ); - update.newValue = currentValue; - } + const update = generateUpdate( + config, + versioning, + currentVersion, + bucket, + release + ); if (!update.newValue || update.newValue === currentValue) { if (!lockedVersion) { continue; // eslint-disable-line no-continue @@ -242,39 +232,9 @@ export async function lookupUpdates( } res.isSingleVersion = true; } - update.newMajor = versioning.getMajor(newVersion); - update.newMinor = versioning.getMinor(newVersion); - update.updateType = - update.updateType || - getUpdateType(config, versioning, currentVersion, newVersion); res.isSingleVersion = res.isSingleVersion || !!versioning.isSingleVersion(update.newValue); - if (!versioning.isVersion(update.newValue)) { - update.isRange = true; - } - const releaseFields = [ - 'checksumUrl', - 'downloadUrl', - 'newDigest', - 'releaseTimestamp', - ]; - releaseFields.forEach((field) => { - if (release[field] !== undefined) { - update[field] = release[field]; - } - }); - if ( - rangeStrategy === 'update-lockfile' && - currentValue === update.newValue - ) { - update.isLockfileUpdate = true; - } - if ( - rangeStrategy === 'bump' && - versioning.matches(newVersion, currentValue) - ) { - update.isBump = true; - } + res.updates.push(update); } } else if (currentValue) { @@ -314,12 +274,6 @@ export async function lookupUpdates( }); } } - if (versioning.valueToVersion) { - res.currentVersion = versioning.valueToVersion(res.currentVersion); - for (const update of res.updates || []) { - update.newVersion = versioning.valueToVersion(update.newVersion); - } - } // update digest for all for (const update of res.updates) { if (pinDigests || currentDigest) { From 68195f2ff589f57cb4031750c67236cfc20b38ff Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Thu, 29 Apr 2021 22:42:07 +0200 Subject: [PATCH 2/4] update snapshot --- .../repository/process/lookup/__snapshots__/index.spec.ts.snap | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap index ba633127e638cd..8aa3b3a9fbdba3 100644 --- a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap +++ b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap @@ -170,7 +170,6 @@ Object { exports[`workers/repository/process/lookup/index .lookupUpdates() handles git submodule update 1`] = ` Object { - "currentVersion": undefined, "updates": Array [ Object { "newDigest": "4b825dc642cb6eb9a060e54bf8d69288fbee4904", From 94a90370ef854bf89a178c8730b95b24758fdd78 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 30 Apr 2021 08:59:15 +0200 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Michael Kriese --- lib/workers/repository/process/lookup/generate.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/workers/repository/process/lookup/generate.ts b/lib/workers/repository/process/lookup/generate.ts index 0c3d5976c6b041..fdebffecf6a482 100644 --- a/lib/workers/repository/process/lookup/generate.ts +++ b/lib/workers/repository/process/lookup/generate.ts @@ -1,8 +1,8 @@ -import { Release } from '../../../../datasource'; +import type { Release } from '../../../../datasource'; import { logger } from '../../../../logger'; import type { LookupUpdate } from '../../../../manager/types'; -import { VersioningApi } from '../../../../versioning'; -import { LookupUpdateConfig } from './types'; +import type { VersioningApi } from '../../../../versioning'; +import type { LookupUpdateConfig } from './types'; import { getUpdateType } from './update-type'; export function generateUpdate( From 649dd19b5df74fab45b6d54da02db7a420b6f176 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 30 Apr 2021 09:50:08 +0200 Subject: [PATCH 4/4] revert --- .../process/lookup/__snapshots__/index.spec.ts.snap | 2 ++ lib/workers/repository/process/lookup/generate.ts | 3 --- lib/workers/repository/process/lookup/index.ts | 9 ++++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap index 8aa3b3a9fbdba3..871c729a8f4b3a 100644 --- a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap +++ b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap @@ -170,10 +170,12 @@ Object { exports[`workers/repository/process/lookup/index .lookupUpdates() handles git submodule update 1`] = ` Object { + "currentVersion": undefined, "updates": Array [ Object { "newDigest": "4b825dc642cb6eb9a060e54bf8d69288fbee4904", "newValue": undefined, + "newVersion": undefined, "updateType": "digest", }, ], diff --git a/lib/workers/repository/process/lookup/generate.ts b/lib/workers/repository/process/lookup/generate.ts index fdebffecf6a482..bdeda2b62aefac 100644 --- a/lib/workers/repository/process/lookup/generate.ts +++ b/lib/workers/repository/process/lookup/generate.ts @@ -61,8 +61,5 @@ export function generateUpdate( ) { update.isBump = true; } - if (versioning.valueToVersion) { - update.newVersion = versioning.valueToVersion(update.newVersion); - } return update; } diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index 6adf3a82bfa754..75402e77170368 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -152,9 +152,6 @@ export async function lookupUpdates( allVersions.map((v) => v.version) ); res.currentVersion = currentVersion; - if (versioning.valueToVersion) { - res.currentVersion = versioning.valueToVersion(res.currentVersion); - } if ( currentVersion && rangeStrategy === 'pin' && @@ -274,6 +271,12 @@ export async function lookupUpdates( }); } } + if (versioning.valueToVersion) { + res.currentVersion = versioning.valueToVersion(res.currentVersion); + for (const update of res.updates || []) { + update.newVersion = versioning.valueToVersion(update.newVersion); + } + } // update digest for all for (const update of res.updates) { if (pinDigests || currentDigest) {