Skip to content

Commit b9a4b74

Browse files
committed
automate module inter-module dependency setup
1 parent 5ad011c commit b9a4b74

37 files changed

Lines changed: 124 additions & 163 deletions

File tree

build.gradle

Lines changed: 88 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
buildscript {
2+
dependencies {
3+
classpath 'net.fabricmc:fabric-loader:0.18.6'
4+
}
5+
}
6+
17
plugins {
28
id 'java-library'
39
id 'eclipse'
@@ -7,6 +13,9 @@ plugins {
713
id 'ploceus' version '1.15-SNAPSHOT' apply false
814
}
915

16+
import net.fabricmc.loader.api.SemanticVersion
17+
import net.fabricmc.loader.impl.game.minecraft.McVersionLookup
18+
1019
setUpJar(project)
1120

1221
def setUpJar(project) {
@@ -157,7 +166,7 @@ def fillModJson(project, task) {
157166
project.tasks.build.dependsOn task
158167
}
159168

160-
def setUpLibrary(project, String... dependencies) {
169+
def setUpLibrary(project) {
161170
project.apply plugin: 'java-library'
162171
project.apply plugin: 'eclipse'
163172
project.apply plugin: 'idea'
@@ -182,7 +191,10 @@ def setUpLibrary(project, String... dependencies) {
182191
mavenCentral()
183192
}
184193

185-
def libraries = getLibraryDependencies(project, dependencies)
194+
def libraries = []
195+
def modules = []
196+
197+
findLibraryDependencies(project, libraries, modules)
186198

187199
project.dependencies {
188200
implementation "net.fabricmc:fabric-loader:${project.rootProject.loader_version}"
@@ -195,13 +207,16 @@ def setUpLibrary(project, String... dependencies) {
195207
libraries.each { libraryPath ->
196208
implementation project.dependencies.project(path: libraryPath)
197209
}
210+
modules.each { modulePath ->
211+
implementation project.dependencies.project(path: modulePath, configuration: 'namedElements')
212+
}
198213
}
199214

200215
addPomDependency(project)
201216
setUpJavadoc(project)
202217
}
203218

204-
def setUpModule(project, String... dependencies) {
219+
def setUpModule(project) {
205220
// normally modules have a 'root' and subprojects
206221
// for different mc version ranges
207222
// the Core API is the only exception to this
@@ -243,10 +258,10 @@ def setUpModule(project, String... dependencies) {
243258
setIntermediaryGeneration(2)
244259
}
245260

246-
def modules = getModuleDependencies(project, dependencies)
261+
def libraries = []
262+
def modules = []
247263

248-
project.repositories {
249-
}
264+
findModuleDependencies(project, libraries, modules)
250265

251266
project.dependencies {
252267
minecraft "com.mojang:minecraft:${project.minecraft_version}"
@@ -290,6 +305,9 @@ def setUpModule(project, String... dependencies) {
290305
implementation project.dependencies.project(path: library.path)
291306
}
292307

308+
libraries.each { libraryPath ->
309+
implementation project.dependencies.project(path: libraryPath)
310+
}
293311
modules.each { modulePath ->
294312
implementation project.dependencies.project(path: modulePath, configuration: 'namedElements')
295313
}
@@ -430,31 +448,81 @@ def setUpModule(project, String... dependencies) {
430448
setUpJavadoc(project)
431449
}
432450

433-
def getLibraryDependencies(project, String... libraryNames) {
434-
def libraries = new ArrayList<>()
451+
def findLibraryDependencies(project, libraries, modules) {
452+
if (project.hasProperty('osl_dependencies')) {
453+
def deps = project.osl_dependencies.split(',')
435454

436-
for (libraryName : libraryNames) {
437-
libraries.add(":libraries:${libraryName}")
438-
}
455+
for (dep : deps) {
456+
def libraryName = dep.substring(0, dep.indexOf(':'))
439457

440-
return libraries
458+
if (libraryName != 'core') {
459+
libraries.add(":libraries:${libraryName}")
460+
}
461+
}
462+
463+
modules.add(':libraries:core')
464+
}
441465
}
442466

443-
def getModuleDependencies(project, String... moduleNames) {
444-
def modules = new ArrayList<>()
467+
def findModuleDependencies(project, libraries, modules) {
468+
if (project.hasProperty('osl_dependencies')) {
469+
def deps = project.osl_dependencies.split(',')
470+
471+
for (dep : deps) {
472+
def libraryName = dep.substring(0, dep.indexOf(':'))
473+
474+
if (libraryName != 'core') {
475+
def moduleName = findModuleDependency(project, libraryName)
476+
477+
libraries.add(":libraries:${libraryName}")
478+
if (moduleName != null) {
479+
modules.add(":libraries:${libraryName}:${moduleName}")
480+
}
481+
}
482+
}
445483

446-
if (project.path != ':libraries:core') {
447484
modules.add(':libraries:core')
448485
}
486+
}
487+
488+
def findModuleDependency(project, libraryName) {
489+
def library = project.project(":libraries:${libraryName}")
490+
def modules = library.getSubprojects()
449491

450-
for (moduleName : moduleNames) {
451-
def i = moduleName.indexOf('-mc')
452-
def libraryName = moduleName.substring(0, i)
492+
def projectMcVersion = getMinecraftVersion(project.minecraft_version)
493+
494+
for (module : modules) {
495+
if (!environmentsMatch(project, module)) {
496+
continue;
497+
}
453498

454-
modules.add(":libraries:${libraryName}:${moduleName}")
499+
def pathParts = module.path.split(':')
500+
def moduleName = pathParts[3]
501+
502+
def mcVersionParts = moduleName.split('-mc')
503+
def minMcVersion = getMinecraftVersion(mcVersionParts[1])
504+
def maxMcVersion = getMinecraftVersion(mcVersionParts[2])
505+
506+
if (projectMcVersion >= minMcVersion && projectMcVersion <= maxMcVersion) {
507+
return moduleName;
508+
}
455509
}
456510

457-
return modules
511+
return null
512+
}
513+
514+
def getMinecraftVersion(name) {
515+
def release = McVersionLookup.getRelease(name)
516+
def normalized = McVersionLookup.normalizeVersion(name, release)
517+
518+
return SemanticVersion.parse(normalized)
519+
}
520+
521+
def environmentsMatch(project, module) {
522+
def env = project.hasProperty('environment') ? project.environment : '*'
523+
def menv = module.hasProperty('environment') ? module.environment : '*'
524+
525+
return env == '*' || menv == '*' || env == menv
458526
}
459527

460528
def shouldPublish(project, mavenUrl) {
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mc13w16a-mc1.14.4',
3-
'lifecycle-events-mc13w36a-mc1.13'
4-
)
1+
setUpModule(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mc13w16a-mc1.14.4',
3-
'lifecycle-events-mc13w36a-mc1.13'
4-
)
1+
setUpModule(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mcin-20091223-1459-mc1.5.2',
3-
'lifecycle-events-mc12w21a-mc1.6.4'
4-
)
1+
setUpModule(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mcin-20091223-1459-mc1.5.2',
3-
'lifecycle-events-mcinf-20100630-1340-mca1.2.6'
4-
)
1+
setUpModule(project)

libraries/branding/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
setUpLibrary(project, 'entrypoints', 'lifecycle-events')
1+
setUpLibrary(project)

libraries/config/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
setUpLibrary(project, 'entrypoints', 'lifecycle-events')
1+
setUpLibrary(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mcin-20091223-1459-mc1.5.2',
3-
'lifecycle-events-mc12w21a-mc1.6.4'
4-
)
1+
setUpModule(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mc13w16a-mc1.14.4',
3-
'lifecycle-events-mc13w36a-mc1.13'
4-
)
1+
setUpModule(project)
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
setUpModule(project,
2-
'entrypoints-mc13w16a-mc1.14.4',
3-
'lifecycle-events-mc13w36a-mc1.13'
4-
)
1+
setUpModule(project)

0 commit comments

Comments
 (0)