42 lines
1.4 KiB
Groovy
42 lines
1.4 KiB
Groovy
|
def processModule(File moduleDir, File generatedResourcesDir) {
|
||
|
def moduleName = moduleDir.name
|
||
|
def factoriesFile = new File(moduleDir, 'META-INF/spring.factories')
|
||
|
new File(generatedResourcesDir, "auto-configuration-classes-${moduleName}.adoc")
|
||
|
.withPrintWriter {
|
||
|
generateAutoConfigurationClassTable(moduleName, factoriesFile, it)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def generateAutoConfigurationClassTable(String module, File factories, PrintWriter writer) {
|
||
|
writer.println '[cols="4,1"]'
|
||
|
writer.println '|==='
|
||
|
writer.println '| Configuration Class | Links'
|
||
|
|
||
|
getAutoConfigurationClasses(factories).each {
|
||
|
writer.println ''
|
||
|
writer.println "| {github-code}/$module/src/main/java/$it.path.{sc-ext}[`$it.name`]"
|
||
|
writer.println "| {dc-root}/$it.path.{dc-ext}[javadoc]"
|
||
|
}
|
||
|
|
||
|
writer.println '|==='
|
||
|
}
|
||
|
|
||
|
def getAutoConfigurationClasses(File factories) {
|
||
|
factories.withInputStream {
|
||
|
def properties = new Properties()
|
||
|
properties.load(it)
|
||
|
properties.get('org.springframework.boot.autoconfigure.EnableAutoConfiguration')
|
||
|
.split(',')
|
||
|
.collect {
|
||
|
def path = it.replace('.', '/')
|
||
|
def name = it.substring(it.lastIndexOf('.') + 1)
|
||
|
[ 'path': path, 'name': name]
|
||
|
}
|
||
|
.sort {a, b -> a.name.compareTo(b.name)}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def autoConfigDir = new File(project.build.directory, 'auto-config')
|
||
|
def generatedResourcesDir = new File(project.build.directory, 'generated-resources')
|
||
|
autoConfigDir.eachDir { processModule(it, generatedResourcesDir) }
|