Add possibility to hardcode version

^KT-42921 fixed
This commit is contained in:
Ilya Goncharov
2020-11-14 20:59:25 +03:00
committed by TeamCityServer
parent 88abb3d6c9
commit a06feaf819
4 changed files with 67 additions and 41 deletions
@@ -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
)
@@ -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<String>
)
sealed class PackageInformation {
abstract val name: String
abstract val versions: Set<String>
}
data class RealPackageInformation(
override val name: String,
override val versions: Set<String>
) : PackageInformation()
data class HardcodedPackageInformation(
override val name: String,
val version: String
) : PackageInformation() {
override val versions: Set<String> = setOf(version)
}
@@ -21,15 +21,19 @@ class VersionFetcher : AutoCloseable {
suspend fun fetch(): List<PackageInformation> {
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
)
}
}
}
@@ -53,10 +53,15 @@ fun main() {
fun findLastVersions(packages: List<PackageInformation>): List<Package> {
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,