Files
MicroUtils/ksp/generator/src/main/kotlin/FilesWorkaround.kt

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)
}
}
}