blob: facf36d8e7eb00e4d9c54e2ac26120b335b5c712 [file] [log] [blame]
ext {
datastoreGithubBranch = "8.0.x"
checkOutDir = "build/checkout"
explicitGormSrc = System.getProperty("gorm.src") ?: (project.hasProperty('gorm.src') ? project.getProperty("gorm.src") : null)
gormSrc = explicitGormSrc ? file(explicitGormSrc).absolutePath : "$checkOutDir/gorm-src"
zipFile = "build/source.zip"
coreProjects = [
'core',
'gorm'
]
}
version rootProject.version
apply plugin: 'groovy'
apply plugin: 'org.asciidoctor.jvm.convert'
configurations {
documentation {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, (Bundling) (objects.named(Bundling, 'external')))
}
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.codehaus.groovy' && details.requested.name.startsWith('groovy')) {
details.useVersion(groovyVersion)
}
}
}
dependencies {
documentation "org.fusesource.jansi:jansi:$jansiVersion"
documentation "org.codehaus.groovy:groovy:$groovyVersion"
documentation "org.codehaus.groovy:groovy-templates:$groovyVersion"
documentation "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
documentation "com.github.javaparser:javaparser-core:$javaParserCoreVersion"
for (p in coreProjects) {
documentation "org.apache.grails:grails-datastore-$p:$datastoreVersion"
}
project.rootProject.subprojects.each { subproject ->
if (subproject.name != "docs" && !subproject.name.startsWith('examples')) {
documentation project(":$subproject.name")
}
}
}
asciidoctor {
baseDirFollowsSourceDir()
resources {
from("${project.projectDir}/src/docs/images")
into "${project.projectDir}/images"
}
attributes 'experimental': 'true',
'compat-mode': 'true',
'toc': 'left',
'icons': 'font',
'reproducible': '',
'version': project.version,
'pluginVersion': project.version,
'neo4jVersion': neo4jVersion,
'sourcedir': "${project.rootProject.projectDir}/grails-datastore-gorm-neo4j/src/main/groovy",
'exampledir': "${project.rootProject.projectDir}/examples/grails3-neo4j",
'testsdir': "${project.rootProject.projectDir}/grails-datastore-gorm-neo4j/src/test/groovy"
}
task fetchSource {
outputs.dir layout.buildDirectory.dir('checkout')
inputs.properties(branch: datastoreGithubBranch)
onlyIf {
println "GORM SRC=$explicitGormSrc"
return !explicitGormSrc
}
doLast {
ant.mkdir dir: project.buildDir
ant.mkdir dir: checkOutDir
println "Downloading GORM source code."
if (isReleaseVersion) {
ant.get src: "https://github.com/grails/grails-data-mapping/archive/refs/tags/v${datastoreVersion}.zip", dest: zipFile, verbose: true
} else {
ant.get src: "https://github.com/grails/grails-data-mapping/archive/refs/heads/${datastoreGithubBranch}.zip", dest: zipFile, verbose: true
}
ant.unzip src: zipFile, dest: checkOutDir, {
mapper type: "regexp", from: "(grails-\\S*?/)(.*)", to: "gorm-src/\\2"
}
println "GORM source code downloaded."
}
}
task copyDocs(type: Copy) {
dependsOn('asciidoctor', 'copyResources')
mustRunAfter 'asciidoctor'
finalizedBy 'cleanAsciidoc'
from project(':docs').layout.buildDirectory.dir('docs/asciidoc')
into project(':docs').layout.buildDirectory.dir('docs/manual')
}
task cleanAsciidoc(type: Delete, dependsOn: copyDocs) {
dependsOn 'copyDocs'
delete project(':docs').layout.buildDirectory.dir('docs/asciidoc')
}
tasks.withType(Groovydoc) {
dependsOn(fetchSource)
docTitle = "GORM for Neo4j - ${project.version}"
destinationDir = project.file("build/docs/api")
def files
for (p in coreProjects) {
if (files == null) {
files = project.files("${checkOutDir}/gorm-src/grails-datastore-${p}/src/main/groovy")
} else {
files += project.files("${checkOutDir}/gorm-src/grails-datastore-${p}/src/main/groovy")
}
}
project.rootProject.subprojects.each { subproject ->
if (subproject.name.startsWith('examples')) return
if (subproject.file('src/main/groovy').exists()) {
files += subproject.files("src/main/groovy")
}
}
source = files
classpath = configurations.documentation
}
tasks.withType(org.gradle.api.tasks.javadoc.Groovydoc) {
configure {
access = GroovydocAccess.PRIVATE
processScripts = false
includeMainForScripts = false
includeAuthor = true
groovyClasspath += configurations.documentation
}
}
task copyResources(type: Copy) {
from project(':docs').layout.projectDirectory.dir('src/docs/resources')
into project(':docs').layout.buildDirectory.dir('docs')
}
task docs(dependsOn: [asciidoctor, groovydoc, copyDocs, copyResources] +
subprojects.findAll { project -> project.tasks.findByName('groovydoc') }
.collect { project -> project.tasks.groovydoc }
)
task assembleDocsDist(type: Zip) {
dependsOn 'docs', 'copyDocs'
from "${project.buildDir}/docs"
include '*'
include '*/**'
archiveFileName = "${project.name}-${project.version}.zip"
destinationDirectory = project.layout.buildDirectory.dir('distributions')
}
docs.finalizedBy assembleDocsDist