corda/docs/build.gradle

110 lines
3.7 KiB
Groovy

import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'org.jetbrains.dokka'
dependencies {
implementation rootProject
}
def internalPackagePrefixes(sourceDirs) {
def prefixes = []
// Kotlin allows packages to deviate from the directory structure, but let's assume they don't:
sourceDirs.collect { sourceDir ->
sourceDir.traverse(type: groovy.io.FileType.DIRECTORIES) {
if (it.name == 'internal') {
prefixes.add sourceDir.toPath().relativize(it.toPath()).toString().replace(File.separator, '.')
}
}
}
prefixes
}
ext {
archivedApiDocsBaseFilename = 'api-docs'
}
jar {
enabled = false
}
dokkaHtml {
outputDirectory = file("${rootProject.rootDir}/docs/build/html/api/html")
}
dokkaJavadoc {
outputDirectory = file("${rootProject.rootDir}/docs/build/html/api/javadoc")
}
[dokkaHtml, dokkaJavadoc].forEach {
it.dokkaSourceSets {
customSourceSet {
sourceRoot(file('../core/src/main/kotlin'))
sourceRoot(file('../client/rpc/src/main/kotlin'))
sourceRoot(file('../finance/workflows/src/main/kotlin'))
sourceRoot(file('../finance/contracts/src/main/kotlin'))
sourceRoot(file('../client/jackson/src/main/kotlin'))
sourceRoot(file('../testing/test-utils/src/main/kotlin'))
sourceRoot(file('../testing/node-driver/src/main/kotlin'))
sourceRoot(file('../core/src/main/kotlin'))
sourceRoot(file('../client/rpc/src/main/kotlin'))
sourceRoot(file('../client/rpc/src/main/kotlin'))
externalDocumentationLink {
url.set(new URL("https://fasterxml.github.io/jackson-core/javadoc/2.9/"))
}
externalDocumentationLink {
url.set(new URL("https://docs.oracle.com/javafx/2/api/"))
}
externalDocumentationLink {
url.set(new URL("https://www.bouncycastle.org/docs/docs1.5on/"))
}
}
}
}
task apidocs(dependsOn: ['dokkaHtml', 'dokkaJavadoc']) {
group "Documentation"
description "Build API documentation"
}
task makeHTMLDocs(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine "docker", "run", "--rm", "-v", "${project.projectDir}:/opt/docs_builder", "-v", "${project.projectDir}/..:/opt", "corda/docs-builder:latest", "bash", "-c", "make-docsite-html.sh"
} else {
commandLine "bash", "-c", "docker run --rm --user \$(id -u):\$(id -g) -v ${project.projectDir}:/opt/docs_builder -v ${project.projectDir}/..:/opt corda/docs-builder:latest bash -c make-docsite-html.sh"
}
}
task makePDFDocs(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine "docker", "run", "--rm", "-v", "${project.projectDir}:/opt/docs_builder", "-v", "${project.projectDir}/..:/opt", "corda/docs-builder:latest", "bash", "-c", "make-docsite-pdf.sh"
} else {
commandLine "bash", "-c", "docker run --rm --user \$(id -u):\$(id -g) -v ${project.projectDir}:/opt/docs_builder -v ${project.projectDir}/..:/opt corda/docs-builder:latest bash -c make-docsite-pdf.sh"
}
}
task makeDocs(dependsOn: ['makeHTMLDocs', 'makePDFDocs'])
apidocs.shouldRunAfter makeDocs
task archiveApiDocs(type: Tar) {
dependsOn apidocs
from buildDir
include 'html/**'
extension 'tgz'
compression Compression.GZIP
}
publishing {
publications {
if (System.getProperty('publishApiDocs') != null) {
apply plugin: 'corda.common-publishing'
archivedApiDocs(MavenPublication) {
artifact archiveApiDocs {
artifactId archivedApiDocsBaseFilename
}
}
}
}
}