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
fun engineVersion(): String {
return moduleConfig.dependencies.filterNotNull()
return moduleConfig.dependencies
.filterNotNull()
.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
*/
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) }
}
private fun gradleModule(gestaltDependency: DependencyInfo): Pair<GradleDependencyInfo, Boolean> {
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.)
}
private fun versionStringFromGestaltDependency(gestaltDependency: DependencyInfo): String {
val version = if (gestaltDependency.versionPredicate() is VersionRange) {
gestaltDependency.versionPredicate().toString()
} else {
// TODO: gradle-compatible version expressions for gestalt dependencies
// 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)
return Pair(gradleDep, gestaltDependency.isOptional)