diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt index 9999dbb6a94..c7238a6fc04 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt @@ -6,27 +6,32 @@ package org.jetbrains.kotlin.generators.gradle.targets.js val npmPackages = listOf( - "dukat", - "webpack", - "webpack-cli", - "webpack-bundle-analyzer", - "webpack-dev-server", - "source-map-loader", - "source-map-support", - "css-loader", - "style-loader", - "to-string-loader", - "mini-css-extract-plugin", - "mocha", - "karma", - "karma-chrome-launcher", - "karma-phantomjs-launcher", - "karma-firefox-launcher", - "karma-opera-launcher", - "karma-ie-launcher", - "karma-safari-launcher", - "karma-mocha", - "karma-webpack", - "karma-coverage", - "karma-sourcemap-loader", + NpmPackage("dukat", "0.5.8-rc.3"), + NpmPackage("webpack"), + NpmPackage("webpack-cli"), + NpmPackage("webpack-bundle-analyzer"), + NpmPackage("webpack-dev-server"), + NpmPackage("source-map-loader"), + NpmPackage("source-map-support"), + NpmPackage("css-loader"), + NpmPackage("style-loader"), + NpmPackage("to-string-loader"), + NpmPackage("mini-css-extract-plugin"), + NpmPackage("mocha"), + NpmPackage("karma"), + NpmPackage("karma-chrome-launcher"), + NpmPackage("karma-phantomjs-launcher"), + NpmPackage("karma-firefox-launcher"), + NpmPackage("karma-opera-launcher"), + NpmPackage("karma-ie-launcher"), + NpmPackage("karma-safari-launcher"), + NpmPackage("karma-mocha"), + NpmPackage("karma-webpack"), + NpmPackage("karma-coverage"), + NpmPackage("karma-sourcemap-loader"), +) + +data class NpmPackage( + val name: String, + val version: String? = null ) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/PackageDto.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/PackageDto.kt index aa6220bed38..054856ada6e 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/PackageDto.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/PackageDto.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.generators.gradle.targets.js data class Package( val name: String, - val version: SemVer + val version: String ) { // Used in velocity template @Suppress("unused") @@ -18,7 +18,19 @@ data class Package( .joinToString("") } -data class PackageInformation( - val name: String, - val versions: Set -) \ No newline at end of file +sealed class PackageInformation { + abstract val name: String + abstract val versions: Set +} + +data class RealPackageInformation( + override val name: String, + override val versions: Set +) : PackageInformation() + +data class HardcodedPackageInformation( + override val name: String, + val version: String +) : PackageInformation() { + override val versions: Set = setOf(version) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/VersionFetcher.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/VersionFetcher.kt index a51c267947d..2656872fdce 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/VersionFetcher.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/VersionFetcher.kt @@ -21,15 +21,19 @@ class VersionFetcher : AutoCloseable { suspend fun fetch(): List { return coroutineScope { npmPackages - .map { async { fetchPackageInformationAsync(it) } } - .map { fetched -> - val (packageName, value) = fetched.await() - val fetchedPackageInformation = Gson().fromJson(value, FetchedPackageInformation::class.java) - PackageInformation( - packageName, - fetchedPackageInformation.versions.keys - ) - } + .filter { it.version != null } + .map { HardcodedPackageInformation(it.name, it.version!!) } + + npmPackages + .filter { it.version == null } + .map { async { fetchPackageInformationAsync(it.name) } } + .map { fetched -> + val (packageName, value) = fetched.await() + val fetchedPackageInformation = Gson().fromJson(value, FetchedPackageInformation::class.java) + RealPackageInformation( + packageName, + fetchedPackageInformation.versions.keys + ) + } } } diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/main.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/main.kt index 85549e70449..e888f086e0d 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/main.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/main.kt @@ -53,10 +53,15 @@ fun main() { fun findLastVersions(packages: List): List { return packages .map { packageInformation -> - val maximumVersion = packageInformation.versions - .map { SemVer.from(it) } - .filter { it.preRelease == null && it.build == null } - .maxOrNull() ?: throw error("There is no applicable version for ${packageInformation.name}") + val maximumVersion = when (packageInformation) { + is RealPackageInformation -> packageInformation.versions + .map { SemVer.from(it) } + .filter { it.preRelease == null && it.build == null } + .maxOrNull() + ?.toString() + ?: throw error("There is no applicable version for ${packageInformation.name}") + is HardcodedPackageInformation -> packageInformation.version + } Package( packageInformation.name,