Skip to content

Commit

Permalink
Merge pull request #2 from 2BAB/dev
Browse files Browse the repository at this point in the history
Fix: incremental process got disabled mistakenly
  • Loading branch information
2BAB committed Apr 4, 2022
2 parents aa03e68 + 97fa765 commit 0d2c582
Show file tree
Hide file tree
Showing 30 changed files with 72 additions and 47 deletions.
2 changes: 1 addition & 1 deletion deps.versions.toml
@@ -1,5 +1,5 @@
[versions]
koncatVer = "1.0.0"
koncatVer = "1.0.1"
kotlinVer = "1.6.10"
agpVer = "7.1.2"
agpBetaVer = "7.2.0-beta04"
Expand Down
Expand Up @@ -2,7 +2,7 @@ package me.xx2bab.koncat.contract

const val KONCAT_FILE_EXTENSION = "koncat"
const val KONCAT_PROCESSOR_ARGUMENT_KEY = "KONCAT."
const val KONCAT_FILE_SEPARATOR = "\\0"
const val KONCAT_STRING_SEPARATOR = "<@KONCAT@>"

const val LOG_TAG = "[Koncat] "
const val ARGUMENT_PARSE_ERROR = "Koncat arguments can not match due to %s"
Expand Down
Expand Up @@ -47,12 +47,12 @@ class KoncatArgumentsContract {
}

for ((k, v) in koncatArgumentMap) {
logger.info("Koncat receives the argument: $k = $v")
logger.info("$LOG_TAG Koncat receives the argument: $k = $v")
}

projectName = koncatArgumentMap[KoncatArgument.PROJECT_NAME.name]!!
koncatVersion = koncatArgumentMap[KoncatArgument.KONCAT_VERSION.name]!!
gradlePlugins = koncatArgumentMap[KoncatArgument.GRADLE_PLUGINS.name]!!.split(KONCAT_FILE_SEPARATOR)
gradlePlugins = koncatArgumentMap[KoncatArgument.GRADLE_PLUGINS.name]!!.split(KONCAT_STRING_SEPARATOR)
declaredAsMainProject = koncatArgumentMap[KoncatArgument.DECLARED_AS_MAIN_MODULE.name]!!.toBoolean()
variantAwareIntermediates = File(koncatArgumentMap[KoncatArgument.VARIANT_AWARE_INTERMEDIATES.name]!!)
}
Expand All @@ -61,7 +61,7 @@ class KoncatArgumentsContract {
val map = HashMap<String, String>()
map[KoncatArgument.PROJECT_NAME.name] = projectName
map[KoncatArgument.KONCAT_VERSION.name] = koncatVersion
map[KoncatArgument.GRADLE_PLUGINS.name] = gradlePlugins.joinToString(separator = KONCAT_FILE_SEPARATOR)
map[KoncatArgument.GRADLE_PLUGINS.name] = gradlePlugins.joinToString(separator = KONCAT_STRING_SEPARATOR)
map[KoncatArgument.DECLARED_AS_MAIN_MODULE.name] = declaredAsMainProject.toString()
map[KoncatArgument.VARIANT_AWARE_INTERMEDIATES.name] = variantAwareIntermediates.absolutePath
return map.mapKeys {
Expand Down
Expand Up @@ -20,7 +20,7 @@ class KoncatBasePlugin : Plugin<Project> {
val argumentsContract = KoncatArgumentsContract(
projectName = project.name,
koncatVersion = BuildConfig.KONCAT_VERSION,
gradlePlugins = plugins.map { it.toString() },
gradlePlugins = plugins.map { it.toString().split("@")[0] },
declaredAsMainProject = baseExt.isMainProject.get(),
variantAwareIntermediates = baseExt.mainProjectOutputDir.get().asFile, // TODO: it may be consumed eagerly
)
Expand Down
Expand Up @@ -3,8 +3,8 @@ package me.xx2bab.koncat.sample.android
import me.xx2bab.koncat.sample.annotation.ExportAPI

@ExportAPI
class ExportedAndroidLibraryRunnable2: Runnable {
class ExportedAndroidLibraryExternalRunnable: Runnable {
override fun run() {
println("ExportedAndroidLibraryAPI2 is running...")
println("ExportedAndroidLibraryExternalRunnable is running...")
}
}
Expand Up @@ -5,6 +5,6 @@ import me.xx2bab.koncat.sample.annotation.ExportAPI
@ExportAPI
class ExportedAndroidLibraryRunnable: Runnable {
override fun run() {
println("ExportedAndroidLibraryAPI is running")
println("ExportedAndroidLibraryAPI is running...")
}
}
5 changes: 4 additions & 1 deletion sample/gradle.properties
Expand Up @@ -19,4 +19,7 @@ android.useAndroidX=true
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
org.gradle.caching=true
org.gradle.caching=true

ksp.incremental=true
ksp.incremental.log=true
@@ -0,0 +1,11 @@
package me.xx2bab.koncat.sample.kotlin

import me.xx2bab.koncat.sample.annotation.ExportAPI

@ExportAPI
class ExportedPureKotlinLibraryRunnable2 : Runnable {
override fun run() {
println("ExportedPureKotlinLibraryAPI2 is running...")
}
}

Binary file not shown.
@@ -1 +1 @@
a918d3a03335223b04be41fa88e41ad9
db6efe85432f2376d86a0d362a050056
@@ -1 +1 @@
b18f9f7159bc26b7f0373b6289bee4a91555d48d
b7cce7a652357bc1831daedd90f2f8fbdac5f304
@@ -1 +1 @@
6928ce7fe9caaa2467c338e4af9636990d5760d18229d25b883a9f937b91ad85
fad543449f3a21305fb163a035cba7351f2814fa7edb6eeeec6d9f1eddb8c5cb
@@ -1 +1 @@
b697b895f649c54e8be2661402e79c715fabf94dd5321c5dce41ec65ae84cdd2ee708815dd8af603b860ec85b20239a4f66b2c177d987087bea962962b361cd6
1197e79e9b0f653a5fff63f3149f0ad4d6a128144fbb02959ffc5a059b97aa1999627bb54388f6cc6e476dda42f8bf2c5a1f34e2517b81a21c7e6b3d1c5def93
Binary file not shown.
@@ -1 +1 @@
d3e4ed3931b14f36a59bac36d9db02c6
d57118295d7758b3529d7e7c0e13b289
@@ -1 +1 @@
7ccc739654cbb0f86643c967c1e881a53ef9e896
24a478cf198244465d7550d69015f7efd66bf3b7
@@ -1 +1 @@
b370f6ffc354178d656568bba4066e52a1360a3c1cd01830bfde2e65a1553ea3
9b40b12b4aa08808adbcbbb5161d62a693d1e44146f362a9d3919eaf146565ae
@@ -1 +1 @@
c50f2822fa0c6ddf354ad89c9acd7891f2e6d812ad670b103117f1a9f5d350fa7a0945c5e0229747b3ba6ea0a6b69cf39f4995c79fe1b7b6c06a6a4522ee8b85
40181afb95227f3a67ebde9f764c19db651236a52bb131daa322e89fe9b92c373a3c988a272bb29d176b850775715dc52fc48557f88c6fcc8facdbd77c44fd02
Expand Up @@ -26,11 +26,11 @@
{
"name": "koncat-sample-lib2-1.0.aar",
"url": "koncat-sample-lib2-1.0.aar",
"size": 2128,
"sha512": "c50f2822fa0c6ddf354ad89c9acd7891f2e6d812ad670b103117f1a9f5d350fa7a0945c5e0229747b3ba6ea0a6b69cf39f4995c79fe1b7b6c06a6a4522ee8b85",
"sha256": "b370f6ffc354178d656568bba4066e52a1360a3c1cd01830bfde2e65a1553ea3",
"sha1": "7ccc739654cbb0f86643c967c1e881a53ef9e896",
"md5": "d3e4ed3931b14f36a59bac36d9db02c6"
"size": 2135,
"sha512": "40181afb95227f3a67ebde9f764c19db651236a52bb131daa322e89fe9b92c373a3c988a272bb29d176b850775715dc52fc48557f88c6fcc8facdbd77c44fd02",
"sha256": "9b40b12b4aa08808adbcbbb5161d62a693d1e44146f362a9d3919eaf146565ae",
"sha1": "24a478cf198244465d7550d69015f7efd66bf3b7",
"md5": "d57118295d7758b3529d7e7c0e13b289"
}
]
},
Expand Down Expand Up @@ -62,11 +62,11 @@
{
"name": "koncat-sample-lib2-1.0.aar",
"url": "koncat-sample-lib2-1.0.aar",
"size": 2128,
"sha512": "c50f2822fa0c6ddf354ad89c9acd7891f2e6d812ad670b103117f1a9f5d350fa7a0945c5e0229747b3ba6ea0a6b69cf39f4995c79fe1b7b6c06a6a4522ee8b85",
"sha256": "b370f6ffc354178d656568bba4066e52a1360a3c1cd01830bfde2e65a1553ea3",
"sha1": "7ccc739654cbb0f86643c967c1e881a53ef9e896",
"md5": "d3e4ed3931b14f36a59bac36d9db02c6"
"size": 2135,
"sha512": "40181afb95227f3a67ebde9f764c19db651236a52bb131daa322e89fe9b92c373a3c988a272bb29d176b850775715dc52fc48557f88c6fcc8facdbd77c44fd02",
"sha256": "9b40b12b4aa08808adbcbbb5161d62a693d1e44146f362a9d3919eaf146565ae",
"sha1": "24a478cf198244465d7550d69015f7efd66bf3b7",
"md5": "d57118295d7758b3529d7e7c0e13b289"
}
]
},
Expand All @@ -82,11 +82,11 @@
{
"name": "koncat-sample-lib2-1.0-sources.jar",
"url": "koncat-sample-lib2-1.0-sources.jar",
"size": 1910,
"sha512": "b697b895f649c54e8be2661402e79c715fabf94dd5321c5dce41ec65ae84cdd2ee708815dd8af603b860ec85b20239a4f66b2c177d987087bea962962b361cd6",
"sha256": "6928ce7fe9caaa2467c338e4af9636990d5760d18229d25b883a9f937b91ad85",
"sha1": "b18f9f7159bc26b7f0373b6289bee4a91555d48d",
"md5": "a918d3a03335223b04be41fa88e41ad9"
"size": 1927,
"sha512": "1197e79e9b0f653a5fff63f3149f0ad4d6a128144fbb02959ffc5a059b97aa1999627bb54388f6cc6e476dda42f8bf2c5a1f34e2517b81a21c7e6b3d1c5def93",
"sha256": "fad543449f3a21305fb163a035cba7351f2814fa7edb6eeeec6d9f1eddb8c5cb",
"sha1": "b7cce7a652357bc1831daedd90f2f8fbdac5f304",
"md5": "db6efe85432f2376d86a0d362a050056"
}
]
}
Expand Down
@@ -1 +1 @@
26d5b84b4e5231ed20835515e9489980
7de8f6969db7351fb020984752a0b8b0
@@ -1 +1 @@
8d90d03a7034e4156e907707e8020fb51a51b018
d5e7ace6eb7d8a6b82263a14d09cc95fef298857
@@ -1 +1 @@
4ef954cdb03b3ea3b4d1cf81c17b434849ace65875041b3456d180a6bdaabac1
fc6d76b49e43b980a67db49ecf148d359224123b81339c7648502ffbe55f60d0
@@ -1 +1 @@
39114f6eb3ff1ca07caaa6466ed851a5c393b96eafd0dd2f0f7f72cb540a0c6bc354a5ffab113471eab13d12ec712905dd599e1ce2c4c2b60c49e17f8dc9f501
c950acd6cc1f4ea9bc54f052e5137039e54c82475b3f6696c61030281e0d927bebc00d5601642e97ecbd9c254fbe77eb83c1fbfc9503db60aca1390b8915f8f9
Expand Up @@ -8,6 +8,6 @@
<versions>
<version>1.0</version>
</versions>
<lastUpdated>20220331064103</lastUpdated>
<lastUpdated>20220404021729</lastUpdated>
</versioning>
</metadata>
@@ -1 +1 @@
762ce58486f74beacf1914390c43c23c
5a5f841d29a108fd9a60a34f61ddbea6
@@ -1 +1 @@
92aa2640d89c2d1b6347808288ce2d05b70b5d84
22d46a565af0f83035db384f240f658424c62d40
@@ -1 +1 @@
aeb3f1dc3665d60a7f1a183fca27c45b0c73a5bd11ddfa4ca9718a2b7e449f17
9985ed947d48d7f7d9210d1cb50d22c9701e6f34bf1c072907262193abfc8c87
@@ -1 +1 @@
7fcec7ee04d0dc497012d750226d40b85850a0522446e1aa73946380be542c678a018c395c0be8a1aa9a247a3538b4407f2db4a7434344a2b8de1171031b9665
fd4b320f87f44c43945133b1f2460625851138baa76f09608d46bebdb0a9218d4e813cae948e012b2e444f6f39fedc4594e03fe9f703cdef4f79030fe7920005
Expand Up @@ -38,6 +38,7 @@ class ExportAnnotationProcessor(
private var exportMetadata = ExportMetadata()

override fun process(resolver: Resolver): List<KSAnnotated> {
logger.info("$LOG_TAG [process]")
val symbols =
resolver.getSymbolsWithAnnotation("me.xx2bab.koncat.sample.annotation.ExportAPI")
val ret = symbols.filter { !it.validate() }.toList()
Expand All @@ -50,6 +51,7 @@ class ExportAnnotationProcessor(
@OptIn(KotlinPoetKspPreview::class)
override fun finish() {
super.finish()
logger.info("$LOG_TAG [finish]")
if (koncat.isMainProject()) {
logger.info(
LOG_TAG + "Query all sub projects meta data from "
Expand All @@ -71,11 +73,11 @@ class ExportAnnotationProcessor(
all.addAll(subProjectMetadataList)
// Generate the final file
val fileSpec = RouterClassBuilder(all).build()
fileSpec.writeTo(codeGenerator, Dependencies(aggregating = false))
fileSpec.writeTo(codeGenerator, Dependencies.ALL_FILES)
} else {
// Generate intermediate JSON file
val os = codeGenerator.createNewFile(
Dependencies(aggregating = false),
Dependencies(aggregating = true, *exportMetadata.mapKSFiles.toTypedArray()),
"",
koncat.projectName + "-export",
"json.$KONCAT_FILE_EXTENSION"
Expand All @@ -85,12 +87,18 @@ class ExportAnnotationProcessor(
}
}

override fun onError() {
super.onError()
logger.info("$LOG_TAG [onError]")
}

inner class BuilderVisitor() : KSVisitorWithExportMetadata() {
override fun visitClassDeclaration(
classDeclaration: KSClassDeclaration,
data: ExportMetadata
) {
data.exportAPI.add(classDeclaration.qualifiedName!!.asString())
data.exportAPIs.add(classDeclaration.qualifiedName!!.asString())
classDeclaration.containingFile?.let { data.mapKSFiles.add(it) }
}
}

Expand All @@ -101,7 +109,7 @@ class ExportAnnotationProcessor(
val routerInterface = ClassName("me.xx2bab.koncat.sample", "ExportCapabilityRouter")
val list = ClassName("kotlin.collections", "List")
val listOfString = list.parameterizedBy(String::class.asTypeName())
val exportAPIs = dataList.flatMap { it.exportAPI }
val exportAPIs = dataList.flatMap { it.exportAPIs }
.map { "\"$it\"" }
.joinToString(separator = ", ")

Expand Down
@@ -1,8 +1,11 @@
package me.xx2bab.koncat.sample.kotlin

import com.google.devtools.ksp.symbol.KSFile
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient

@Serializable
data class ExportMetadata(
val exportAPI: MutableList<String> = mutableListOf()
val exportAPIs: MutableList<String> = mutableListOf(),
@Transient val mapKSFiles: MutableList<KSFile> = mutableListOf()
)

0 comments on commit 0d2c582

Please sign in to comment.