Skip to content

Opinionated setup for kotlin-poet code generator projects

License

Notifications You must be signed in to change notification settings

toolisticon/kotlin-code-generation

Repository files navigation

kotlin-code-generation

The one-stop lib for code generation for kotlin (jvm) and code generation testing. Based on kotlin-poet.

incubating Maven Central Build Status Codacy Badge codecov Kotlin sponsored

Usage:

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.toolisticon.kotlin.generation</groupId>
        <artifactId>kotlin-code-generation-bom</artifactId>
        <version>LATEST_VERSION</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

Documentation

Features

  • KotlinAnnotationSpec
    • KotlinAnnotationSpecBuilder
  • KotlinFileSpec
    • KotlinFileSpecBuilder
  • KotlinFunSpec
    • KotlinFunSpecBuilder
  • KotlinParameterSpec
    • KotlinParameterSpecBuilder
  • KotlinPropertySpec
    • KotlinPropertySpecBuilder

Roadmap

Specs to support

  • com/squareup/kotlinpoet/TypeAliasSpec
  • com/squareup/kotlinpoet/TypeSpec

Builders to implement

  • com/squareup/kotlinpoet/AnnotationSpec$Builder
    • Taggable.Builder
  • com/squareup/kotlinpoet/CodeBlock$Builder
    • None
  • com/squareup/kotlinpoet/FileSpec$Builder
    • Annotatable.Builder
    • Taggable.Builder
    • TypeSpecHolder.Builder
  • com/squareup/kotlinpoet/FunSpec$Builder
    • Annotatable.Builder
    • ContextReceivable.Builder
    • Documentable.Builder
    • Taggable.Builder
    • OriginatingElementsHolder.Builder
  • com/squareup/kotlinpoet/ParameterSpec$Builder
    • Annotatable.Builder
    • Documentable.Builder
    • Taggable.Builder
  • com/squareup/kotlinpoet/PropertySpec$Builder
    • Annotatable.Builder
    • ContextReceivable.Builder
    • Documentable.Builder
    • OriginatingElementsHolder.Builder
    • Taggable.Builder
  • com/squareup/kotlinpoet/TypeAliasSpec$Builder
    • Annotatable.Builder
    • Documentable.Builder
    • Taggable.Builder