1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Generate javadocs in {build}/docs/javadoc.

This commit is contained in:
Cedric Beust 2017-01-05 10:13:52 -08:00
parent ffbe5491f2
commit f563d274dd
4 changed files with 19 additions and 15 deletions

View file

@ -22,7 +22,7 @@ class CompilerUtils @Inject constructor(val files: KFiles,
class CompilerResult(val successResults: List<TaskResult>, val failedResult: TaskResult?) class CompilerResult(val successResults: List<TaskResult>, val failedResult: TaskResult?)
fun invokeCompiler(project: Project, context: KobaltContext, compiler: ICompilerDescription, fun invokeCompiler(project: Project, context: KobaltContext, compiler: ICompilerDescription,
sourceDirectories: List<File>, isTest: Boolean): CompilerResult { sourceDirectories: List<File>, isTest: Boolean, buildDirectory: File): CompilerResult {
val results = arrayListOf<TaskResult>() val results = arrayListOf<TaskResult>()
var failedResult: TaskResult? = null var failedResult: TaskResult? = null
val contributedSourceDirs = val contributedSourceDirs =
@ -37,7 +37,7 @@ class CompilerUtils @Inject constructor(val files: KFiles,
// TODO: createCompilerActionInfo recalculates the source files, only compute them // TODO: createCompilerActionInfo recalculates the source files, only compute them
// once and pass them // once and pass them
val info = createCompilerActionInfo(project, context, compiler, isTest, val info = createCompilerActionInfo(project, context, compiler, isTest,
sourceDirectories, sourceSuffixes = compiler.sourceSuffixes) sourceDirectories, sourceSuffixes = compiler.sourceSuffixes, buildDirectory = buildDirectory)
val thisResult = invokeCompiler(project, context, compiler, info) val thisResult = invokeCompiler(project, context, compiler, info)
results.addAll(thisResult.successResults) results.addAll(thisResult.successResults)
if (failedResult == null) { if (failedResult == null) {
@ -68,7 +68,8 @@ class CompilerUtils @Inject constructor(val files: KFiles,
* Runs all the contributors and interceptors relevant to that task. * Runs all the contributors and interceptors relevant to that task.
*/ */
fun createCompilerActionInfo(project: Project, context: KobaltContext, compiler: ICompilerDescription, fun createCompilerActionInfo(project: Project, context: KobaltContext, compiler: ICompilerDescription,
isTest: Boolean, sourceDirectories: List<File>, sourceSuffixes: List<String>): CompilerActionInfo { isTest: Boolean, sourceDirectories: List<File>, sourceSuffixes: List<String>, buildDirectory: File)
: CompilerActionInfo {
copyResources(project, context, SourceSet.of(isTest)) copyResources(project, context, SourceSet.of(isTest))
val fullClasspath = dependencyManager2.resolve(project, context, isTest, listOf(Scope.COMPILE, Scope.TEST)) val fullClasspath = dependencyManager2.resolve(project, context, isTest, listOf(Scope.COMPILE, Scope.TEST))
@ -83,11 +84,6 @@ class CompilerUtils @Inject constructor(val files: KFiles,
// val d2 = dependencyManager2.resolve(project, context, isTest, listOf(Scope.COMPILE, Scope.TEST)) // val d2 = dependencyManager2.resolve(project, context, isTest, listOf(Scope.COMPILE, Scope.TEST))
// } // }
// The directory where the classes get compiled
val buildDirectory =
if (isTest) File(project.buildDirectory, KFiles.TEST_CLASSES_DIR)
else File(project.classesDir(context))
File(project.directory, buildDirectory.path).mkdirs() File(project.directory, buildDirectory.path).mkdirs()
// Remove all the excluded dependencies from the classpath // Remove all the excluded dependencies from the classpath

View file

@ -177,9 +177,14 @@ open class JvmCompilerPlugin @Inject constructor(
val hasKapt = project.projectProperties.get("kaptConfig") != null val hasKapt = project.projectProperties.get("kaptConfig") != null
val allCompilersSorted = if (hasKapt) swapJavaAndKotlin(allCompilers) else allCompilers val allCompilersSorted = if (hasKapt) swapJavaAndKotlin(allCompilers) else allCompilers
var done = false var done = false
// The directory where the classes get compiled
val buildDirectory =
if (isTest) File(project.buildDirectory, KFiles.TEST_CLASSES_DIR)
else File(project.classesDir(context))
allCompilersSorted.doWhile({ ! done }) { compiler -> allCompilersSorted.doWhile({ ! done }) { compiler ->
val compilerResults = compilerUtils.invokeCompiler(project, context, compiler, val compilerResults = compilerUtils.invokeCompiler(project, context, compiler,
sourceDirectories(project, context, isTest), isTest) sourceDirectories(project, context, isTest), isTest, buildDirectory)
results.addAll(compilerResults.successResults) results.addAll(compilerResults.successResults)
if (failedResult == null) failedResult = compilerResults.failedResult if (failedResult == null) failedResult = compilerResults.failedResult
compilerResults.failedResult?.let { failedResult -> compilerResults.failedResult?.let { failedResult ->
@ -216,6 +221,7 @@ open class JvmCompilerPlugin @Inject constructor(
fun taskJavadoc(project: Project): TaskResult { fun taskJavadoc(project: Project): TaskResult {
val docGenerator = ActorUtils.selectAffinityActor(project, context, context.pluginInfo.docContributors) val docGenerator = ActorUtils.selectAffinityActor(project, context, context.pluginInfo.docContributors)
if (docGenerator != null) { if (docGenerator != null) {
val buildDirectory = File(project.buildDirectory, KFiles.JAVADOC_DIR)
val contributors = val contributors =
ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors) ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors)
var result: TaskResult? = null var result: TaskResult? = null
@ -224,7 +230,7 @@ open class JvmCompilerPlugin @Inject constructor(
result = docGenerator.generateDoc(project, context, result = docGenerator.generateDoc(project, context,
compilerUtils.createCompilerActionInfo(project, context, compiler, compilerUtils.createCompilerActionInfo(project, context, compiler,
isTest = false, sourceDirectories = sourceDirectories(project, context, false), isTest = false, sourceDirectories = sourceDirectories(project, context, false),
sourceSuffixes = compiler.sourceSuffixes)) sourceSuffixes = compiler.sourceSuffixes, buildDirectory = buildDirectory))
} }
} }
return result!! return result!!

View file

@ -71,6 +71,7 @@ class KFiles {
private val SRC = "src" private val SRC = "src"
val TEST_CLASSES_DIR : String = "test-classes" val TEST_CLASSES_DIR : String = "test-classes"
val JAVADOC_DIR: String = "docs/javadoc"
val NATIVES_DIR : String = "native" val NATIVES_DIR : String = "native"

View file

@ -44,11 +44,12 @@ class KotlinCompiler @Inject constructor(
} }
val cp = compilerFirst(info.dependencies.map { it.jarFile.get() }) val cp = compilerFirst(info.dependencies.map { it.jarFile.get() })
val infoDir = info.directory val infoDir = info.directory
val outputDir = if (infoDir != null) { val outputDir =
KFiles.joinDir(infoDir, info.outputDir.path) if (infoDir != null) {
} else { KFiles.joinDir(infoDir, info.outputDir.path)
info.outputDir.path } else {
} info.outputDir.path
}
// kotlinc can accept a jar file as -d (which is super convenient) so only // kotlinc can accept a jar file as -d (which is super convenient) so only
// create a directory if the output is not a jar file // create a directory if the output is not a jar file
if (! outputDir.endsWith(".jar")) { if (! outputDir.endsWith(".jar")) {