From ec8eee6386248be25c3d821fc04c59b15f71f6d4 Mon Sep 17 00:00:00 2001 From: Sam Carlton Date: Thu, 28 Apr 2022 16:45:21 -0500 Subject: [PATCH] Fix version levels and normalize version strings --- build-lists.js | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/build-lists.js b/build-lists.js index c0f5081..2b0da1c 100644 --- a/build-lists.js +++ b/build-lists.js @@ -35,7 +35,26 @@ const cliOptions = { } +function normalizeVersion ( rawVersion ) { + const containsNumbers = /\d+/.test( rawVersion ) + if ( !containsNumbers ) { + return '0.0.0' + } + + let version = rawVersion + + // Parse each part + version = version + .split('.') + .map( part => { + // Trim leading zeros + return part.replace(/^0+/, '') + } ) + .join('.') + + return semver.coerce(version) +} class BuildLists { constructor () { @@ -193,18 +212,24 @@ class BuildLists { } sortBundleVersions ( bundles ) { - return mapValues( bundles, ( unsortedVersions ) => { - // console.log( 'unsortedVersions', Object.entries( unsortedVersions )[0] ) + return bundles.map( bundle => { + const [ + bundleIdentifier, + versionsObject + ] = bundle // Sort versions by semver - const versions = Object.entries( unsortedVersions ).sort( ( [ aVersionRaw ], [ bVersionRaw ] ) => { - const aVersion = semver.coerce( aVersionRaw ) - const bVersion = semver.coerce( bVersionRaw ) + const versions = Object.entries( versionsObject ).sort( ( [ aVersionRaw ], [ bVersionRaw ] ) => { + const aVersion = normalizeVersion( aVersionRaw ) + const bVersion = normalizeVersion( bVersionRaw ) return semver.compare( bVersion, aVersion ) } ) - return versions + return [ + bundleIdentifier, + versions + ] } ) }