Zinc
An extensible compiler plugin for Kotlin to automatically expand data classes to include their own builder DSL.
Introduction
Zinc was originally conceived as a solution to reduce testing boilerplate, but supposedly there are production use cases too.
More information to come as this becomes more useful.
How it works
When enabled, Zinc analyzes specified source sets and generates builders and a DSL for each data class. There are two classes of builders generated: production and test.
Production Builders
These builders are for use in production code when a builder pattern is preferable over using a constructor. All properties must be able to resolve a value. When a field does not have a default value, an exception will be thrown with details about the missing field.
Configure the source sets that should contribute to this classification by setting the productionSourceSetNames
field on the plugin extension. See Setup
Test Builders
Not yet implemented.
This is the work-in-progress primary feature of this plugin. Builders in this classification will be generated with randomized default values for all fields. This essentially provides a clean, all fields optional way to supply fake data in tests.
Setup
Artifacts can be downloaded from Maven Central.
Gradle Kotlin Script
plugins {
id("com.noheltcj.zinc") version "0.0.3"
}
zinc {
// defaults to true
enabled = true
// defaults to setOf("main")
productionSourceSetNames = setOf("main", "anotherSourceSet")
}
Gradle Groovy
plugins {
id 'com.noheltcj.zinc' version '0.0.3'
}
zinc {
productionSourceSetNames = ['main', 'anotherSourceSet']
}