Skip to content

Commit 123f95c

Browse files
authored
feat: reduce to either min or max version found in yarn.lock (#3)
1 parent 4514ca5 commit 123f95c

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

script.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import lockfile from '@yarnpkg/lockfile';
1111
* @param {object} options
1212
* @param {string} [options.versionRequirement] the version requirement, for example `^12` See https://www.npmjs.com/package/semver
1313
* @param {string} [options.library] full name of library to be updated via renovate, for example @time-loop/cdk-library. Ignored when doing an `all non-major updates`.
14+
* @param {string} [options.reduce] how to reduce the list of versions, for example `max` or `min`
1415
*/
1516
export async function script(
1617
octokit,
1718
repository,
18-
{ versionRequirement: versionRequirement, library = '@time-loop/cdk-library' }
19+
{ versionRequirement, reduce, library = '@time-loop/cdk-library' }
1920
) {
2021
if (!versionRequirement) {
2122
throw new Error('--minVersion is required, example 11.1.2');
@@ -65,13 +66,25 @@ export async function script(
6566
if (nameOnly !== library) continue;
6667
const details = yarnLock.object[packageName];
6768
versions.push(details.version);
69+
// octokit.log.warn(`packageName: ${packageName}, version: ${details.version}`);
6870
}
6971

7072
if (versions.length < 1) {
7173
octokit.log.debug(`${repository.full_name} does not have ${library} in ${path}`);
7274
return;
7375
}
7476

77+
switch (reduce) {
78+
case 'min':
79+
const smallest = versions.reduce((prev, current) => Semver.compare(prev, current) === -1 ? prev : current, '99999999.0.0');
80+
versions = [smallest];
81+
break;
82+
case 'max':
83+
const largest = versions.reduce((prev, current) => Semver.compare(prev, current) === 1 ? prev : current, '0.0.0');
84+
versions = [largest];
85+
break;
86+
}
87+
7588
versions.map((v) => {
7689
if (Semver.satisfies(v, versionRequirement)) {
7790
octokit.log.info(`${repository.full_name} library ${library} at version ${v} satisfies ${versionRequirement}`);

0 commit comments

Comments
 (0)