mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-10-11 02:10:31 +00:00
49 lines
1.3 KiB
Kotlin
49 lines
1.3 KiB
Kotlin
package dev.inmo.micro_ksp.generator
|
|
|
|
import com.google.devtools.ksp.symbol.KSClassDeclaration
|
|
import com.google.devtools.ksp.symbol.KSFile
|
|
import com.squareup.kotlinpoet.FileSpec
|
|
import java.io.File
|
|
|
|
fun KSClassDeclaration.writeFile(
|
|
prefix: String = "",
|
|
suffix: String = "",
|
|
relatedPath: String = "",
|
|
force: Boolean = false,
|
|
fileSpecBuilder: () -> FileSpec
|
|
) {
|
|
val containingFile = containingFile!!
|
|
File(
|
|
File(
|
|
File(containingFile.filePath).parent,
|
|
relatedPath
|
|
),
|
|
"$prefix${simpleName.asString()}$suffix.kt"
|
|
).takeIf { force || !it.exists() } ?.apply {
|
|
parentFile.mkdirs()
|
|
writer().use { writer ->
|
|
fileSpecBuilder().writeTo(writer)
|
|
}
|
|
}
|
|
}
|
|
|
|
fun KSFile.writeFile(
|
|
prefix: String = "",
|
|
suffix: String = "",
|
|
relatedPath: String = "",
|
|
force: Boolean = false,
|
|
fileSpecBuilder: () -> FileSpec
|
|
) {
|
|
File(
|
|
File(
|
|
File(filePath).parent,
|
|
relatedPath
|
|
),
|
|
"$prefix${fileName.dropLastWhile { it != '.' }.removeSuffix(".")}$suffix.kt"
|
|
).takeIf { force || !it.exists() } ?.apply {
|
|
parentFile.mkdirs()
|
|
writer().use { writer ->
|
|
fileSpecBuilder().writeTo(writer)
|
|
}
|
|
}
|
|
} |