From 72b0629976a9d91696ce3f9dfa58fb1f307d9147 Mon Sep 17 00:00:00 2001 From: Bojan Date: Tue, 9 Aug 2022 21:21:57 +0200 Subject: [PATCH] * Fix generator value modifiers. * Avoid reserved Kotlin keywords in generator. * Fix Kotlin compiler flags. --- CHANGELOG.md | 8 ++++++++ README.md | 12 ++++++------ config.gradle | 2 +- generator/build.gradle | 2 +- .../infinum/collar/generator/extensions/String.kt | 5 ++++- .../collar/generator/extensions/TypeSpecBuilder.kt | 13 +++++++------ .../collar/generator/generators/EventsGenerator.kt | 4 +++- .../generator/generators/UserPropertiesGenerator.kt | 4 +++- gradle/libs.versions.toml | 2 +- processor/build.gradle | 2 +- .../collar/processor/specs/AnalyticsEventsSpec.kt | 3 +++ .../collar/processor/specs/UserPropertiesSpec.kt | 3 +++ ui/build.gradle | 2 +- 13 files changed, 42 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 984824a3..c2deb743 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Change Log ========== +## Version 1.3.6 + +_2022-08-09_ + +* Fix generator value modifiers. +* Avoid reserved Kotlin keywords in generator. +* Fix Kotlin compiler flags. + ## Version 1.3.5 _2022-08-05_ diff --git a/README.md b/README.md index cb03b8ac..69304223 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ buildscript { mavenCentral() } dependencies { - classpath "com.infinum.collar:collar-plugin:1.3.5" + classpath "com.infinum.collar:collar-plugin:1.3.6" } } ``` @@ -42,7 +42,7 @@ buildscript { mavenCentral() } dependencies { - classpath("com.infinum.collar:collar-plugin:1.3.5") + classpath("com.infinum.collar:collar-plugin:1.3.6") } } ``` @@ -261,13 +261,13 @@ You can search, filter and clear all sent analytics. In your app `build.gradle` or `build.gradle.kts` add: **Groovy** ```gradle -debugImplementation "com.infinum.collar:collar-ui:1.3.5" -releaseImplementation "com.infinum.collar:collar-ui-no-op:1.3.5" +debugImplementation "com.infinum.collar:collar-ui:1.3.6" +releaseImplementation "com.infinum.collar:collar-ui-no-op:1.3.6" ``` **KotlinDSL** ```kotlin -debugImplementation("com.infinum.collar:collar-ui:1.3.5") -releaseImplementation("com.infinum.collar:collar-ui-no-op:1.3.5") +debugImplementation("com.infinum.collar:collar-ui:1.3.6") +releaseImplementation("com.infinum.collar:collar-ui-no-op:1.3.6") ``` In order to start tracking with UI you must use _LiveCollector_ as in this example: diff --git a/config.gradle b/config.gradle index 9930ead4..0ca44fe2 100644 --- a/config.gradle +++ b/config.gradle @@ -1,7 +1,7 @@ ext { def major = 1 def minor = 3 - def patch = 5 + def patch = 6 buildConfig = [ "minSdk" : 19, diff --git a/generator/build.gradle b/generator/build.gradle index 24e3d1b5..1868cbfa 100644 --- a/generator/build.gradle +++ b/generator/build.gradle @@ -18,7 +18,7 @@ compileKotlin { jvmTarget = "1.8" freeCompilerArgs += [ '-Xjvm-default=all', - '-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi' + '-opt-in=kotlinx.serialization.ExperimentalSerializationApi' ] } } diff --git a/generator/src/main/kotlin/com/infinum/collar/generator/extensions/String.kt b/generator/src/main/kotlin/com/infinum/collar/generator/extensions/String.kt index 8f94dc3e..396f0da7 100644 --- a/generator/src/main/kotlin/com/infinum/collar/generator/extensions/String.kt +++ b/generator/src/main/kotlin/com/infinum/collar/generator/extensions/String.kt @@ -3,7 +3,7 @@ package com.infinum.collar.generator.extensions import com.infinum.collar.generator.models.DataType import java.util.Locale -internal fun String.toCamelCase(): String = split(" ", "_") +internal fun String.toCamelCase(capitalize: Boolean = true): String = split(" ", "_") .joinToString("") { it.replaceFirstChar { value -> if (value.isLowerCase()) { @@ -13,6 +13,9 @@ internal fun String.toCamelCase(): String = split(" ", "_") } } } + .replaceFirstChar { + if (capitalize) it.uppercase() else it.lowercase() + } internal fun String.isFirstCharDigit(): Boolean = this.firstOrNull()?.isDigit() ?: false diff --git a/generator/src/main/kotlin/com/infinum/collar/generator/extensions/TypeSpecBuilder.kt b/generator/src/main/kotlin/com/infinum/collar/generator/extensions/TypeSpecBuilder.kt index 6733884f..afb26040 100644 --- a/generator/src/main/kotlin/com/infinum/collar/generator/extensions/TypeSpecBuilder.kt +++ b/generator/src/main/kotlin/com/infinum/collar/generator/extensions/TypeSpecBuilder.kt @@ -5,20 +5,21 @@ import com.squareup.kotlinpoet.KModifier import com.squareup.kotlinpoet.PropertySpec import com.squareup.kotlinpoet.TypeSpec -internal fun TypeSpec.Builder.addValue() = - this.primaryConstructor( +internal fun TypeSpec.Builder.addValue(parameterName: String = "parameter"): TypeSpec.Builder { + return this.primaryConstructor( FunSpec.constructorBuilder() - .addParameter("value", String::class, KModifier.PRIVATE) + .addParameter(parameterName, String::class) .build() ) .addProperty( - PropertySpec.builder("value", String::class) - .initializer("value") + PropertySpec.builder(parameterName, String::class) + .initializer(parameterName) .build() ) .addFunction( FunSpec.builder("toString") .addModifiers(KModifier.OVERRIDE) - .addStatement("return value") + .addStatement("return $parameterName") .build() ) +} diff --git a/generator/src/main/kotlin/com/infinum/collar/generator/generators/EventsGenerator.kt b/generator/src/main/kotlin/com/infinum/collar/generator/generators/EventsGenerator.kt index c7988fe4..e0a122f8 100644 --- a/generator/src/main/kotlin/com/infinum/collar/generator/generators/EventsGenerator.kt +++ b/generator/src/main/kotlin/com/infinum/collar/generator/generators/EventsGenerator.kt @@ -69,7 +69,9 @@ internal class EventsGenerator( if (parameter.values?.isNotEmpty() == true) { val enumBuilder = TypeSpec.enumBuilder( parameter.name.toCamelCase() - ).addValue() + ).addValue( + parameter.name.toCamelCase(capitalize = false) + ) parameter.values.forEach { value -> enumBuilder.addEnumConstant( diff --git a/generator/src/main/kotlin/com/infinum/collar/generator/generators/UserPropertiesGenerator.kt b/generator/src/main/kotlin/com/infinum/collar/generator/generators/UserPropertiesGenerator.kt index 7b02dd84..03e3d4d9 100644 --- a/generator/src/main/kotlin/com/infinum/collar/generator/generators/UserPropertiesGenerator.kt +++ b/generator/src/main/kotlin/com/infinum/collar/generator/generators/UserPropertiesGenerator.kt @@ -66,7 +66,9 @@ internal class UserPropertiesGenerator( if (userProperty.values?.isNotEmpty() == true) { val enumBuilder = TypeSpec.enumBuilder( userProperty.name.toCamelCase() - ).addValue() + ).addValue( + userProperty.name.toCamelCase(capitalize = false) + ) userProperty.values.forEach { value -> enumBuilder.addEnumConstant( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3fdc2857..bb1c140c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -collar = "1.3.5" +collar = "1.3.6" gradle = "7.2.2" lint = "30.2.1" kotlin = "1.7.10" diff --git a/processor/build.gradle b/processor/build.gradle index f3222ac6..82be258b 100644 --- a/processor/build.gradle +++ b/processor/build.gradle @@ -18,7 +18,7 @@ compileKotlin { jvmTarget = "1.8" freeCompilerArgs += [ '-Xjvm-default=all', - '-Xopt-in=com.squareup.kotlinpoet.metadata.KotlinPoetMetadataPreview' + '-opt-in=com.squareup.kotlinpoet.metadata.KotlinPoetMetadataPreview' ] } } diff --git a/processor/src/main/kotlin/com/infinum/collar/processor/specs/AnalyticsEventsSpec.kt b/processor/src/main/kotlin/com/infinum/collar/processor/specs/AnalyticsEventsSpec.kt index 845e7e9c..a55f1f6f 100644 --- a/processor/src/main/kotlin/com/infinum/collar/processor/specs/AnalyticsEventsSpec.kt +++ b/processor/src/main/kotlin/com/infinum/collar/processor/specs/AnalyticsEventsSpec.kt @@ -15,6 +15,7 @@ internal class AnalyticsEventsSpec( companion object { private const val FUNCTION_TRACK_EVENT = "trackEvent" + private const val PARAMETER_NAME_EVENT = "event" private const val STATEMENT_EVENT_CLASS_START = "is %T -> %T.%L(" private const val STATEMENT_EVENT_CLASS_END = ")" @@ -27,6 +28,8 @@ internal class AnalyticsEventsSpec( private val CLASS_BUNDLE = ClassName("android.os", "Bundle") } + override fun parameterName(): String = PARAMETER_NAME_EVENT + override fun extensions(): List = listOf( FunSpec.builder(FUNCTION_TRACK_EVENT) diff --git a/processor/src/main/kotlin/com/infinum/collar/processor/specs/UserPropertiesSpec.kt b/processor/src/main/kotlin/com/infinum/collar/processor/specs/UserPropertiesSpec.kt index c2724d13..7cb290a5 100644 --- a/processor/src/main/kotlin/com/infinum/collar/processor/specs/UserPropertiesSpec.kt +++ b/processor/src/main/kotlin/com/infinum/collar/processor/specs/UserPropertiesSpec.kt @@ -15,9 +15,12 @@ internal class UserPropertiesSpec( companion object { private const val FUNCTION_TRACK_PROPERTY = "trackProperty" + private const val PARAMETER_NAME_PROPERTY = "userProperty" private const val STATEMENT = "is %T -> %T.%L(%S, %L.%L)" } + override fun parameterName(): String = PARAMETER_NAME_PROPERTY + override fun extensions(): List = listOf( FunSpec.builder(FUNCTION_TRACK_PROPERTY) diff --git a/ui/build.gradle b/ui/build.gradle index c519f7e2..5d9b62a5 100644 --- a/ui/build.gradle +++ b/ui/build.gradle @@ -57,7 +57,7 @@ android { freeCompilerArgs += [ '-Xjvm-default=all', '-Xexplicit-api=strict', - '-Xopt-in=kotlinx.coroutines.DelicateCoroutinesApi' + '-opt-in=kotlinx.coroutines.DelicateCoroutinesApi' ] } packagingOptions {