Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update kotlinversion to v1.9.0 #115

Merged
merged 11 commits into from
Nov 18, 2023
Merged
26 changes: 23 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,19 @@ on:

jobs:
"Linux":
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
env:
GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
GPG_SECRET_PASSWORD: ${{ secrets.GPG_SECRET_PASSWORD }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Release
run: >
./gradlew final publish
Expand All @@ -31,11 +36,16 @@ jobs:
"GradlePlugin":
name: Gradle Plugin
needs: [ Linux ]
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Release
run: >
./gradlew final publishPlugins
Expand All @@ -55,6 +65,11 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Release
run: >
./gradlew final :buildata-runtime:publish
Expand All @@ -65,7 +80,7 @@ jobs:
-Pnexus.username=${{ secrets.NEXUS_USERNAME }}

"Windows":
runs-on: windows-2019
runs-on: windows-latest
needs: [ Linux ]
env:
GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
Expand All @@ -74,6 +89,11 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Release
shell: cmd
run: >
Expand Down
52 changes: 41 additions & 11 deletions .github/workflows/verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,17 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
run: >
./gradlew
-PisMainHost=true
-Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishMacosX64PublicationToMavenLocal
publishIosX64PublicationToMavenLocal
Expand All @@ -30,15 +35,20 @@ jobs:
run: ./gradlew clean macosX64Test iosX64Test

"Linux":
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
run: >
./gradlew ktlintCheck
-PisMainHost=true
-Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishLinuxX64PublicationToMavenLocal
linuxX64Test
Expand All @@ -47,16 +57,21 @@ jobs:
run: ./gradlew clean ktlintCheck linuxX64Test

"Windows":
runs-on: windows-2019
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
shell: cmd
run: >
.\gradlew.bat
-PisMainHost=true
-Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishMingwX64PublicationToMavenLocal
mingwX64Test
Expand All @@ -65,15 +80,20 @@ jobs:
run: .\gradlew.bat clean mingwX64Test

"JavaScript":
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
run: >
./gradlew
-PisMainHost=true
-Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishLinuxX64PublicationToMavenLocal
publishJsPublicationToMavenLocal
Expand All @@ -83,14 +103,19 @@ jobs:
run: ./gradlew clean jsTest jsNodeTest

"JVM":
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
run: >
./gradlew -PisMainHost=true
-Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishLinuxX64PublicationToMavenLocal
publishJvmPublicationToMavenLocal
Expand All @@ -100,13 +125,18 @@ jobs:
run: ./gradlew clean jvmTest project-types:jvm:test

"Android":
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
java-package: 'jdk'
- name: Unit tests
run: >
./gradlew -PisMainHost=true -Prelease.version=0.0.0-SNAPSHOT
clean publishPluginsToMavenLocal
publishPluginsToMavenLocal
publishKotlinMultiplatformPublicationToMavenLocal
publishAndroidDebugPublicationToMavenLocal
publishAndroidReleasePublicationToMavenLocal
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ repositories {
1. Add buildata plugin to your build
```kotlin
plugins {
kotlin("multiplatform") version "1.5.20"
kotlin("jvm") version "1.5.20" // alternatively
kotlin("multiplatform") version "1.9.20"
kotlin("jvm") version "1.9.20" // alternatively
// ...
id("io.github.virelion.buildata") version <LIBRARY_VERSION>
}
Expand Down
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ buildscript {
google()
}
dependencies {
classpath("com.android.tools.build:gradle:4.2.2")
classpath("com.android.tools.build:gradle:8.1.0")
}
}

plugins {
kotlin("multiplatform") version "1.7.10" apply false
id("org.jlleitschuh.gradle.ktlint") version "10.3.0" apply false
id("com.gradle.plugin-publish") version "0.21.0" apply false
kotlin("multiplatform") version "1.9.20" apply false
id("org.jlleitschuh.gradle.ktlint") version "11.6.1" apply false
id("com.gradle.plugin-publish") version "1.1.0" apply false
id("nebula.release") version "13.2.1"
}

Expand Down
10 changes: 5 additions & 5 deletions buildata-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ gradlePlugin {
description = project.description
id = "io.github.virelion.buildata"
implementationClass = "io.github.virelion.buildata.gradle.BuildataPlugin"
tags.set(listOf("codegen", "Kotlin", "multiplatform"))
}
}
}

pluginBundle {
website = "https://github.com/Virelion/buildata"
vcsUrl = "https://github.com/Virelion/buildata.git"
tags = listOf("codegen", "Kotlin", "multiplatform")
gradlePlugin {
website.set("https://github.com/Virelion/buildata")
vcsUrl.set("https://github.com/Virelion/buildata.git")
}

description = "Plugin that connects Buildata KSP codegen engine to Kotlin gradle project"
Expand All @@ -44,7 +44,7 @@ val kspVersion: String by project
dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("gradle-plugin-api"))
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20")
implementation("com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:$kspVersion")
compileOnly("com.google.auto.service:auto-service:1.0.1")
kapt("com.google.auto.service:auto-service:1.0.1")
Expand Down
1 change: 0 additions & 1 deletion buildata-ksp-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ repositories {
val kspVersion: String by project

dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("compiler-embeddable"))
implementation("com.google.devtools.ksp:symbol-processing-api:$kspVersion")
compileOnly("com.google.auto.service:auto-service:1.0.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
package io.github.virelion.buildata.ksp

import com.google.devtools.ksp.symbol.KSAnnotation
import com.google.devtools.ksp.symbol.KSPropertyDeclaration
import com.google.devtools.ksp.symbol.KSType
import com.google.devtools.ksp.symbol.KSValueParameter
import io.github.virelion.buildata.ksp.extensions.classFQName
import io.github.virelion.buildata.ksp.extensions.className
import io.github.virelion.buildata.ksp.extensions.pkg
Expand All @@ -26,12 +28,20 @@ import io.github.virelion.buildata.ksp.utils.CodeBuilder
class ClassProperty(
val name: String,
val type: KSType,
val hasDefaultValue: Boolean,
val nullable: Boolean,
val annotations: Sequence<KSAnnotation>,
val buildable: Boolean,
val pathReflection: Boolean
val pathReflection: Boolean,
val classProperty: KSPropertyDeclaration?,
val constructorParameter: KSValueParameter
) {
val annotations: Sequence<KSAnnotation> get() {
return constructorParameter.annotations +
(classProperty?.annotations ?: emptySequence()) +
(classProperty?.getter?.annotations ?: emptySequence()) +
(classProperty?.setter?.annotations ?: emptySequence())
}

val hasDefaultValue: Boolean get() = constructorParameter.hasDefault
val backingPropName = "${name}_Element"

fun generatePropertyDeclaration(codeBuilder: CodeBuilder) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,16 @@ internal class KSClassDeclarationProcessor(
.filter { it.isVar || it.isVal }
.map { parameter ->
val type = parameter.type.resolve()
val classProp = this.getAllProperties().find { it.simpleName == parameter.name }

ClassProperty(
name = requireNotNull(parameter.name?.getShortName(), parameter) { "$printableFqName contains nameless property" },
type = type,
hasDefaultValue = parameter.hasDefault,
nullable = type.nullability == Nullability.NULLABLE,
annotations = parameter.annotations,
buildable = (type.classFQName() in annotatedClasses.buildable),
pathReflection = (type.classFQName() in annotatedClasses.pathReflection)
pathReflection = (type.classFQName() in annotatedClasses.pathReflection),
classProp,
parameter
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ fun KSType.typeFQName(): String {
val genericTypes = if (this.innerArguments.isNotEmpty()) {
this.innerArguments.mapNotNull { it.type?.resolve()?.typeFQName() }
.joinToString(prefix = "<", postfix = ">", separator = ", ")
} else ""
} else {
""
}
return "${declaration.qualifiedName!!.getQualifier()}.${className()}$genericTypes${nullability.toCode()}"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ package io.github.virelion.buildata.ksp.path
import com.google.devtools.ksp.symbol.KSAnnotation
import io.github.virelion.buildata.ksp.ClassProperty
import io.github.virelion.buildata.ksp.extensions.classFQName
import org.jetbrains.kotlin.utils.addToStdlib.safeAs

@JvmInline
value class StringNamePathIdentifier(
private val classProperty: ClassProperty,
private val classProperty: ClassProperty
) {
companion object {
val PATH_ELEMENT_NAME_FQNAME = "io.github.virelion.buildata.path.PathElementName"
Expand All @@ -47,11 +46,11 @@ value class StringNamePathIdentifier(
}

private fun KSAnnotation.getFirstParamOfAnnotationAsString(): String? {
return arguments.firstOrNull()?.value?.safeAs<String>()
return arguments.firstOrNull()?.value as? String
}

private fun KSAnnotation.getFirstListElementOfAnnotationAsString(): String? {
return arguments.firstOrNull()?.value?.safeAs<List<String>>()?.firstOrNull()
return (arguments.firstOrNull()?.value as? List<String>)?.firstOrNull()
}

override fun toString(): String {
Expand Down
Loading