Skip to content
Snippets Groups Projects
Unverified Commit 6ad1a331 authored by Rhys Arkins's avatar Rhys Arkins Committed by GitHub
Browse files

refactor: separate update generation (#9788)

parent fa838a56
Branches
No related tags found
No related merge requests found
import type { Release } from '../../../../datasource';
import { logger } from '../../../../logger';
import type { LookupUpdate } from '../../../../manager/types';
import type { VersioningApi } from '../../../../versioning';
import type { 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;
}
return update;
}
...@@ -10,7 +10,6 @@ import { ...@@ -10,7 +10,6 @@ import {
} from '../../../../datasource'; } from '../../../../datasource';
import { logger } from '../../../../logger'; import { logger } from '../../../../logger';
import { getRangeStrategy } from '../../../../manager'; import { getRangeStrategy } from '../../../../manager';
import type { LookupUpdate } from '../../../../manager/types';
import { SkipReason } from '../../../../types'; import { SkipReason } from '../../../../types';
import { clone } from '../../../../util/clone'; import { clone } from '../../../../util/clone';
import { applyPackageRules } from '../../../../util/package-rules'; import { applyPackageRules } from '../../../../util/package-rules';
...@@ -18,9 +17,9 @@ import * as allVersioning from '../../../../versioning'; ...@@ -18,9 +17,9 @@ import * as allVersioning from '../../../../versioning';
import { getBucket } from './bucket'; import { getBucket } from './bucket';
import { getCurrentVersion } from './current'; import { getCurrentVersion } from './current';
import { filterVersions } from './filter'; import { filterVersions } from './filter';
import { generateUpdate } from './generate';
import { getRollbackUpdate } from './rollback'; import { getRollbackUpdate } from './rollback';
import type { LookupUpdateConfig, UpdateResult } from './types'; import type { LookupUpdateConfig, UpdateResult } from './types';
import { getUpdateType } from './update-type';
export async function lookupUpdates( export async function lookupUpdates(
inconfig: LookupUpdateConfig inconfig: LookupUpdateConfig
...@@ -208,25 +207,13 @@ export async function lookupUpdates( ...@@ -208,25 +207,13 @@ export async function lookupUpdates(
); );
const release = sortedReleases.pop(); const release = sortedReleases.pop();
const newVersion = release.version; const newVersion = release.version;
const update: LookupUpdate = { const update = generateUpdate(
newVersion, config,
newValue: null, versioning,
};
update.bucket = bucket;
try {
update.newValue = versioning.getNewValue({
currentValue,
rangeStrategy,
currentVersion, currentVersion,
newVersion, bucket,
}); release
} catch (err) /* istanbul ignore next */ {
logger.warn(
{ err, currentValue, rangeStrategy, currentVersion, newVersion },
'getNewValue error'
); );
update.newValue = currentValue;
}
if (!update.newValue || update.newValue === currentValue) { if (!update.newValue || update.newValue === currentValue) {
if (!lockedVersion) { if (!lockedVersion) {
continue; // eslint-disable-line no-continue continue; // eslint-disable-line no-continue
...@@ -241,39 +228,9 @@ export async function lookupUpdates( ...@@ -241,39 +228,9 @@ export async function lookupUpdates(
} }
res.isSingleVersion = true; 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 =
res.isSingleVersion || !!versioning.isSingleVersion(update.newValue); 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); res.updates.push(update);
} }
} else if (currentValue) { } else if (currentValue) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment