build(module_build): use same DependencyInfo -> String logic for modules and engine (#4649)

* build(module_build): use same DependencyInfo -> String logic for modules and engine

* build(module_build): remove corner case handling for min SNAPHSOT
develop
Tobias Nett 2021-05-07 21:27:58 +02:00 committed by GitHub
parent 0d39a3bca5
commit e3c202adab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 14 deletions

View File

@ -48,9 +48,11 @@ class ModuleMetadataForGradle(private val moduleConfig: ModuleMetadata) {
val group: String = TERASOLOGY_MODULES_GROUP val group: String = TERASOLOGY_MODULES_GROUP
fun engineVersion(): String { fun engineVersion(): String {
return moduleConfig.dependencies.filterNotNull() return moduleConfig.dependencies
.filterNotNull()
.find { it.id.toString() == ENGINE_MODULE_NAME } .find { it.id.toString() == ENGINE_MODULE_NAME }
?.versionRange()?.toString() ?: "+" ?.let(this::versionStringFromGestaltDependency)
?: "+"
} }
/** /**
@ -59,27 +61,23 @@ class ModuleMetadataForGradle(private val moduleConfig: ModuleMetadata) {
* @return a list of modules and whether each is optional * @return a list of modules and whether each is optional
*/ */
fun moduleDependencies(): List<Pair<GradleDependencyInfo, Boolean>> { fun moduleDependencies(): List<Pair<GradleDependencyInfo, Boolean>> {
val gestaltDeps = moduleConfig.dependencies.filterNotNull().filterNot { it.id.toString() == "engine" } val gestaltDeps = moduleConfig.dependencies.filterNotNull().filterNot { it.id.toString() == ENGINE_MODULE_NAME }
return gestaltDeps.map { gradleModule(it) } return gestaltDeps.map { gradleModule(it) }
} }
private fun gradleModule(gestaltDependency: DependencyInfo): Pair<GradleDependencyInfo, Boolean> { private fun versionStringFromGestaltDependency(gestaltDependency: DependencyInfo): String {
if (!gestaltDependency.minVersion.isSnapshot) {
// gestalt considers snapshots to satisfy a minimum requirement:
// https://github.com/MovingBlocks/gestalt/blob/fe1893821127/gestalt-module/src/main/java/org/terasology/naming/VersionRange.java#L58-L59
gestaltDependency.minVersion = gestaltDependency.minVersion.snapshot
// (maybe there's some way to do that with a custom gradle resolver?
// but making a resolver that only works that way on gestalt modules specifically
// sounds complicated.)
}
val version = if (gestaltDependency.versionPredicate() is VersionRange) { val version = if (gestaltDependency.versionPredicate() is VersionRange) {
gestaltDependency.versionPredicate().toString() gestaltDependency.versionPredicate().toString()
} else { } else {
// TODO: gradle-compatible version expressions for gestalt dependencies // TODO: gradle-compatible version expressions for gestalt dependencies
// https://github.com/MovingBlocks/gestalt/issues/114 // https://github.com/MovingBlocks/gestalt/issues/114
"[${gestaltDependency.minVersion},)" "[${gestaltDependency.minVersion},)"
} }
return version;
}
private fun gradleModule(gestaltDependency: DependencyInfo): Pair<GradleDependencyInfo, Boolean> {
val version = versionStringFromGestaltDependency(gestaltDependency)
val gradleDep = GradleDependencyInfo(TERASOLOGY_MODULES_GROUP, gestaltDependency.id.toString(), version) val gradleDep = GradleDependencyInfo(TERASOLOGY_MODULES_GROUP, gestaltDependency.id.toString(), version)
return Pair(gradleDep, gestaltDependency.isOptional) return Pair(gradleDep, gestaltDependency.isOptional)