Skip to content

Commit

Permalink
fix fqcn and overlapping outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
martinbonnin committed Feb 19, 2024
1 parent 372bd55 commit 3bf79b7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package gratatouille.processor

import com.google.devtools.ksp.symbol.*
import com.google.devtools.ksp.symbol.KSAnnotation
import com.google.devtools.ksp.symbol.KSClassDeclaration
import com.google.devtools.ksp.symbol.KSFunctionDeclaration
import com.google.devtools.ksp.symbol.KSPropertyDeclaration
import com.google.devtools.ksp.symbol.KSType
import com.google.devtools.ksp.symbol.KSTypeReference
import com.google.devtools.ksp.symbol.Origin
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.ParameterizedTypeName
import com.squareup.kotlinpoet.TypeName
Expand All @@ -9,7 +15,7 @@ import com.squareup.kotlinpoet.ksp.toTypeName
internal class GTaskAction(
val packageName: String,
val functionName: String,
val name: String?,
val annotationName: String?,
val description: String?,
val group: String?,
val parameters: List<Property>,
Expand Down Expand Up @@ -123,7 +129,7 @@ internal fun KSFunctionDeclaration.toGTaskAction(): GTaskAction {
functionName = this.simpleName.asString(),
parameters = parameters,
returnValues = returnValues,
name = name,
annotationName = name,
description = description,
group = group
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
package gratatouille.processor

import com.squareup.kotlinpoet.*
import com.squareup.kotlinpoet.AnnotationSpec
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.CodeBlock
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.ParameterSpec
import com.squareup.kotlinpoet.ParameterizedTypeName
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeName
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.TypeVariableName

internal fun GTaskAction.taskFile(coordinates: String): FileSpec {
val className = taskClassName()
Expand All @@ -17,14 +28,14 @@ internal fun GTaskAction.taskFile(coordinates: String): FileSpec {
}

private fun GTaskAction.register(coordinates: String): FunSpec {
val thisTaskName = name ?: taskName()
val defaultTaskName = annotationName ?: taskName()
return FunSpec.builder(registerName())
.addModifiers(KModifier.INTERNAL)
.receiver(ClassName("org.gradle.api", "Project"))
.returns(ClassName("org.gradle.api.tasks", "TaskProvider").parameterizedBy(taskClassName()))
.addParameter(
ParameterSpec.builder(taskName, ClassName("kotlin", "String"))
.defaultValue(thisTaskName.toCodeBlock())
.defaultValue(defaultTaskName.toCodeBlock())
.build()
)
.addParameter(
Expand Down Expand Up @@ -109,10 +120,10 @@ private fun GTaskAction.register(coordinates: String): FunSpec {
else -> error("Gratatouille: invalid output type for '${it.name}': ${it.type}")
}
add(
"it.%L.set(this@%L.layout.buildDirectory.$method(%S))\n",
"it.%L.set(this@%L.layout.buildDirectory.$method(%L))\n",
it.name,
registerName(),
"gtask/$thisTaskName/${it.name}"
"\"gtask/\${$taskName}/${it.name}\""
)
}
}
Expand Down Expand Up @@ -393,7 +404,7 @@ private fun GTaskAction.workActionExecute(): FunSpec {
.add("%T.getPlatformClassLoader()\n", ClassName("java.lang", "ClassLoader"))
.unindent()
.add(")")
.add(".loadClass(%S)\n", entryPointClassName().toString())
.add(".loadClass(%S)\n", entryPointClassName().canonicalName)
.add(".declaredMethods.single()\n")
.add(".invoke(\n")
.indent()
Expand Down

0 comments on commit 3bf79b7

Please sign in to comment.