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 SNAPHSOTdevelop
parent
0d39a3bca5
commit
e3c202adab
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue