Extract some common source generator logic from FIR tree generator
This commit is contained in:
committed by
Alexander Udalov
parent
2eab61d75f
commit
c11d01bebb
+4
-1
@@ -6,8 +6,11 @@
|
||||
package org.jetbrains.kotlin.fir.tree.generator
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.printer.generateElements
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.*
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.configureInterfacesAndAbstractClasses
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.detectBaseTransformerTypes
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.collectPreviouslyGeneratedFiles
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.removeExtraFilesFromPreviousGeneration
|
||||
import java.io.File
|
||||
|
||||
|
||||
|
||||
+1
-6
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.tree.generator.printer
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.GENERATED_MESSAGE
|
||||
import org.jetbrains.kotlin.util.SmartPrinter
|
||||
import java.io.File
|
||||
|
||||
@@ -13,12 +14,6 @@ private val COPYRIGHT = File("license/COPYRIGHT_HEADER.txt").readText()
|
||||
|
||||
const val VISITOR_PACKAGE = "org.jetbrains.kotlin.fir.visitors"
|
||||
const val BASE_PACKAGE = "org.jetbrains.kotlin.fir"
|
||||
val GENERATED_MESSAGE = """
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
""".trimIndent()
|
||||
|
||||
fun generateElements(builder: AbstractFirTreeBuilder, generationPath: File): List<GeneratedFile> {
|
||||
val generatedFiles = mutableListOf<GeneratedFile>()
|
||||
|
||||
-28
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.tree.generator.util
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.printer.GENERATED_MESSAGE
|
||||
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
|
||||
import java.io.File
|
||||
|
||||
fun collectPreviouslyGeneratedFiles(generationPath: File): List<File> {
|
||||
return generationPath.walkTopDown().filter {
|
||||
it.isFile && it.readText().contains(GENERATED_MESSAGE)
|
||||
}.toList()
|
||||
}
|
||||
|
||||
fun removeExtraFilesFromPreviousGeneration(previouslyGeneratedFiles: List<File>, generatedFiles: List<File>) {
|
||||
val generatedFilesPath = generatedFiles.mapTo(mutableSetOf()) { it.absolutePath }
|
||||
|
||||
for (file in previouslyGeneratedFiles) {
|
||||
if (file.absolutePath !in generatedFilesPath) {
|
||||
if (GeneratorsFileUtil.failOnTeamCity("File delete `${file.absolutePath}`")) continue
|
||||
println("Deleted: ${file.absolutePath}")
|
||||
file.delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,13 @@ import kotlin.io.path.*
|
||||
object GeneratorsFileUtil {
|
||||
val isTeamCityBuild: Boolean = System.getenv("TEAMCITY_VERSION") != null
|
||||
|
||||
val GENERATED_MESSAGE = """
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
""".trimIndent()
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
@@ -51,7 +58,7 @@ object GeneratorsFileUtil {
|
||||
println()
|
||||
}
|
||||
|
||||
fun failOnTeamCity(message: String): Boolean {
|
||||
private fun failOnTeamCity(message: String): Boolean {
|
||||
if (!isTeamCityBuild) return false
|
||||
|
||||
fun String.escapeForTC(): String = StringBuilder(length).apply {
|
||||
@@ -85,4 +92,22 @@ object GeneratorsFileUtil {
|
||||
}
|
||||
return StringUtil.convertLineSeparators(content) != currentContent
|
||||
}
|
||||
|
||||
fun collectPreviouslyGeneratedFiles(generationPath: File): List<File> {
|
||||
return generationPath.walkTopDown().filter {
|
||||
it.isFile && it.readText().contains(GENERATED_MESSAGE)
|
||||
}.toList()
|
||||
}
|
||||
|
||||
fun removeExtraFilesFromPreviousGeneration(previouslyGeneratedFiles: List<File>, generatedFiles: List<File>) {
|
||||
val generatedFilesPath = generatedFiles.mapTo(mutableSetOf()) { it.absolutePath }
|
||||
|
||||
for (file in previouslyGeneratedFiles) {
|
||||
if (file.absolutePath !in generatedFilesPath) {
|
||||
if (failOnTeamCity("File delete `${file.absolutePath}`")) continue
|
||||
println("Deleted: ${file.absolutePath}")
|
||||
file.delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user