Skip to content

Commit

Permalink
refactor: Simplify release filtering internals (#30021)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Jul 4, 2024
1 parent c30f7a3 commit c55dc8e
Showing 1 changed file with 23 additions and 29 deletions.
52 changes: 23 additions & 29 deletions lib/workers/repository/process/lookup/filter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,20 @@ export function filterVersions(
}

// Leave only versions greater than current
let filteredVersions = releases.filter(
(v) =>
versioning.isVersion(v.version) &&
versioning.isGreaterThan(v.version, currentVersion),
let filteredReleases = releases.filter(
(r) =>
versioning.isVersion(r.version) &&
versioning.isGreaterThan(r.version, currentVersion),
);

const currentRelease = releases.find((r) => r.version === currentVersion);

// Don't upgrade from non-deprecated to deprecated
const fromRelease = releases.find(
(release) => release.version === currentVersion,
);
if (ignoreDeprecated && fromRelease && !fromRelease.isDeprecated) {
filteredVersions = filteredVersions.filter((v) => {
const versionRelease = releases.find(
(release) => release.version === v.version,
);
// TODO: types (#22198)
if (versionRelease!.isDeprecated) {
if (ignoreDeprecated && currentRelease && !currentRelease.isDeprecated) {
filteredReleases = filteredReleases.filter((r) => {
if (r.isDeprecated) {
logger.trace(
`Skipping ${config.depName!}@${v.version} because it is deprecated`,
`Skipping ${config.depName!}@${r.version} because it is deprecated`,
);
return false;
}
Expand All @@ -66,12 +61,12 @@ export function filterVersions(
if (allowedVersions) {
const isAllowedPred = getRegexPredicate(allowedVersions);
if (isAllowedPred) {
filteredVersions = filteredVersions.filter(({ version }) =>
filteredReleases = filteredReleases.filter(({ version }) =>
isAllowedPred(version),
);
} else if (versioning.isValid(allowedVersions)) {
filteredVersions = filteredVersions.filter((v) =>
versioning.matches(v.version, allowedVersions),
filteredReleases = filteredReleases.filter((r) =>
versioning.matches(r.version, allowedVersions),
);
} else if (
config.versioning !== npmVersioning.id &&
Expand All @@ -81,9 +76,9 @@ export function filterVersions(
{ depName: config.depName },
'Falling back to npm semver syntax for allowedVersions',
);
filteredVersions = filteredVersions.filter((v) =>
filteredReleases = filteredReleases.filter((r) =>
semver.satisfies(
semver.valid(v.version) ? v.version : semver.coerce(v.version)!,
semver.valid(r.version) ? r.version : semver.coerce(r.version)!,
allowedVersions,
),
);
Expand All @@ -95,8 +90,8 @@ export function filterVersions(
{ depName: config.depName },
'Falling back to pypi syntax for allowedVersions',
);
filteredVersions = filteredVersions.filter((v) =>
pep440.matches(v.version, allowedVersions),
filteredReleases = filteredReleases.filter((r) =>
pep440.matches(r.version, allowedVersions),
);
} else {
const error = new Error(CONFIG_VALIDATION);
Expand All @@ -110,31 +105,30 @@ export function filterVersions(
}

if (config.followTag) {
return filteredVersions;
return filteredReleases;
}

if (
respectLatest &&
latestVersion &&
!versioning.isGreaterThan(currentVersion, latestVersion)
) {
filteredVersions = filteredVersions.filter(
(v) => !versioning.isGreaterThan(v.version, latestVersion),
filteredReleases = filteredReleases.filter(
(r) => !versioning.isGreaterThan(r.version, latestVersion),
);
}

if (!ignoreUnstable) {
return filteredVersions;
return filteredReleases;
}

const currentRelease = releases.find((r) => r.version === currentVersion);
if (currentRelease && isReleaseStable(currentRelease, versioning)) {
return filteredVersions.filter((r) => isReleaseStable(r, versioning));
return filteredReleases.filter((r) => isReleaseStable(r, versioning));
}

// if current is unstable then allow unstable in the current major only
// Allow unstable only in current major
return filteredVersions.filter((r) => {
return filteredReleases.filter((r) => {
if (isReleaseStable(r, versioning)) {
return true;
}
Expand Down

0 comments on commit c55dc8e

Please sign in to comment.