Skip to content

Commit b010255

Browse files
authored
enh: allow user to choose name of definitions object (#2)
1 parent f092f46 commit b010255

4 files changed

Lines changed: 14 additions & 15 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# kotlin-preprocessors
22
Gradle plugin to define preprocessors for kotlin language
33

4-
This plugins enable to define kotlin constants from gradle.
4+
This plugin enable to define kotlin constants from gradle.
55
As constants are inlined by compiler, and checks based on constants results in NOP after compiling,
66
it makes constants good candidates for "conditional compiling".
77

@@ -19,7 +19,7 @@ plugins {
1919
Then you can add definitions to your project:
2020
```kotlin
2121
kotlinDefinitions {
22-
definitionsObjectPrefix.set("WhateverNameYouWant") // Here to avoid overlap if a dependency uses this plugin. You can set this to your project name
22+
definitionsObjectName.set("WhateverNameYouWant") // Here to avoid overlap if a dependency uses this plugin. BuildConfig by default
2323

2424
define("DEBUG") // if no value specified, default is bool with value set to true.
2525
define("APP_VERSION", "1.0.0")
@@ -33,8 +33,8 @@ package kotlincompile.definitions
3333

3434
import kotlin.Boolean
3535

36-
public object SamplesDefinitions {
37-
public const val DEBUG: Boolean = true
36+
public object SamplesBuildConfig {
37+
public const val DEBUG: Boolean = true
3838
}
3939
```
4040

kotlin-preprocessors/src/main/kotlin/com/utopiarise/kotlin/preprocessors/codegen/GeneratePreProcessors.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ package com.utopiarise.kotlin.preprocessors.codegen
33
import com.squareup.kotlinpoet.*
44
import java.io.File
55

6-
fun File.generateDefinitions(definitions: Map<String, Any>, definitionsObjectPrefix: String) {
7-
val definitionsContainerName = "${definitionsObjectPrefix}Definitions"
8-
6+
fun File.generateDefinitions(definitions: Map<String, Any>, definitionsObjectName: String) {
97
val definitionsFile = FileSpec
10-
.builder(definitionsPackage, definitionsContainerName)
8+
.builder(definitionsPackage, definitionsObjectName)
119

1210
val definitionsObject = TypeSpec
13-
.objectBuilder(definitionsContainerName)
11+
.objectBuilder(definitionsObjectName)
1412

1513
for (definition in definitions) {
1614
val definitionValue = definition.value

kotlin-preprocessors/src/main/kotlin/com/utopiarise/kotlin/preprocessors/gradle/PreProcessorPlugin.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ import org.gradle.api.tasks.Input
99
import org.gradle.api.tasks.TaskAction
1010
import org.gradle.plugins.ide.idea.IdeaPlugin
1111
import org.gradle.plugins.ide.idea.model.IdeaModel
12-
import org.gradle.plugins.ide.idea.model.IdeaModule
1312
import org.jetbrains.gradle.ext.IdeaExtPlugin
1413
import org.jetbrains.gradle.ext.settings
1514
import org.jetbrains.gradle.ext.taskTriggers
1615
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
1716

17+
private const val DEFAULT_DEFINITION_CLASS = "BuildConfig"
18+
1819
open class PreProcessorPluginExtension(objects: ObjectFactory) {
1920
internal val definitions = mutableMapOf<String, Any>()
20-
val definitionsObjectPrefix = objects.property(String::class.java)
21+
val definitionsObjectName = objects.property(String::class.java)
2122

2223
fun define(definition: String) {
2324
definitions[definition] = true
@@ -41,14 +42,14 @@ open class GenerateDefinitions : DefaultTask() {
4142
val definitions = project.objects.mapProperty(String::class.java, Any::class.java)
4243

4344
@Input
44-
val definitionsObjectPrefix = project.objects.property(String::class.java)
45+
val definitionsObjectName = project.objects.property(String::class.java)
4546

4647
@TaskAction
4748
fun execute() {
4849
val output = project.buildDir.resolve("definitions")
4950
output.deleteRecursively()
5051

51-
output.generateDefinitions(definitions.get(), definitionsObjectPrefix.get())
52+
output.generateDefinitions(definitions.get(), definitionsObjectName.getOrElse(DEFAULT_DEFINITION_CLASS))
5253
}
5354
}
5455

@@ -65,7 +66,7 @@ class PreProcessorPlugin : Plugin<Project> {
6566
val extension = project.extensions.create("kotlinDefinitions", PreProcessorPluginExtension::class.java)
6667
val generationTask = project.tasks.register("generateKotlinDefinitions", GenerateDefinitions::class.java) {
6768
definitions.set(extension.definitions)
68-
definitionsObjectPrefix.set(extension.definitionsObjectPrefix)
69+
definitionsObjectName.set(extension.definitionsObjectName)
6970

7071
group = "kotlin-definitions"
7172
description = "Generate definitions for kotlin as constants."

samples/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ group = "com.utopia-rise"
88
version = "0.1.0-SNAPSHOT"
99

1010
kotlinDefinitions {
11-
definitionsObjectPrefix.set("Samples")
11+
definitionsObjectName.set("SamplesBuildConfig")
1212

1313
define("DEBUG")
1414
}

0 commit comments

Comments
 (0)