Add Kotlin support for "addGeneratedAnnotation" flag (#1115)

This adds logic so that the Kotlin code generator also supports the
"addGeneratedAnnotation" flag.

Also:
* Add Antora documentation
* Adjust names (generated-annotation -> add-generated-annotation)
* Adjust doc comments
This commit is contained in:
Daniel Chao
2025-07-08 14:05:15 -07:00
committed by GitHub
parent 3a35be6311
commit 48ad4386c8
14 changed files with 76 additions and 15 deletions

View File

@@ -29,8 +29,8 @@ data class CliJavaCodeGeneratorOptions(
/** The characters to use for indenting generated source code. */
val indent: String = " ",
/** Whether to add a <code>@Generated</code> annotation to the types to be generated. */
val generatedAnnotation: Boolean = false,
/** Whether to add a `@Generated` annotation to the types to be generated. */
val addGeneratedAnnotation: Boolean = false,
/**
* Whether to generate public getter methods and private/protected fields instead of public
@@ -85,7 +85,7 @@ data class CliJavaCodeGeneratorOptions(
internal fun toJavaCodeGeneratorOptions() =
JavaCodeGeneratorOptions(
indent,
generatedAnnotation,
addGeneratedAnnotation,
generateGetters,
generateJavadoc,
generateSpringBootConfig,

View File

@@ -47,8 +47,8 @@ data class JavaCodeGeneratorOptions(
/** The characters to use for indenting generated Java code. */
val indent: String = " ",
/** Whether to add a <code>@Generated</code> annotation to the types to be generated. */
val generatedAnnotation: Boolean = false,
/** Adds the `org.pkl.config.java.Generated` annotation to the classes to be generated. */
val addGeneratedAnnotation: Boolean = false,
/**
* Whether to generate public getter methods and protected final fields instead of public final
@@ -563,7 +563,7 @@ class JavaCodeGenerator(
fun generateClass(): TypeSpec.Builder {
val builder =
TypeSpec.classBuilder(javaPoetClassName.simpleName()).addModifiers(Modifier.PUBLIC)
if (codegenOptions.generatedAnnotation) {
if (codegenOptions.addGeneratedAnnotation) {
val name = ClassName.get("org.pkl.config.java", "Generated")
val generated = AnnotationSpec.builder(name).build()
builder.addAnnotation(generated)

View File

@@ -55,9 +55,9 @@ class PklJavaCodegenCommand : ModulesCommand(name = "pkl-codegen-java", helpLink
)
.default(defaults.indent)
private val generatedAnnotation: Boolean by
private val addGeneratedAnnotation: Boolean by
option(
names = arrayOf("--generated-annotation"),
names = arrayOf("--add-generated-annotation"),
help = "Whether to add a @Generated annotation to the types to be generated.",
)
.flag()
@@ -139,7 +139,7 @@ class PklJavaCodegenCommand : ModulesCommand(name = "pkl-codegen-java", helpLink
base = baseOptions.baseOptions(modules, projectOptions),
outputDir = outputDir,
indent = indent,
generatedAnnotation = generatedAnnotation,
addGeneratedAnnotation = addGeneratedAnnotation,
generateGetters = generateGetters,
generateJavadoc = generateJavadoc,
generateSpringBootConfig = generateSpringBoot,

View File

@@ -871,7 +871,7 @@ class JavaCodeGeneratorTest {
}
"""
.trimIndent(),
JavaCodeGeneratorOptions(generatedAnnotation = true),
JavaCodeGeneratorOptions(addGeneratedAnnotation = true),
)
assertThat(javaCode).compilesSuccessfully().isEqualToResourceFile("GeneratedAnnotation.jva")