Skip to content

Commit

Permalink
Applies new klint format
Browse files Browse the repository at this point in the history
Signed-off-by: Yauheni Khnykin <[email protected]>
  • Loading branch information
Hsilgos committed Dec 27, 2023
1 parent ef7de06 commit b447e55
Show file tree
Hide file tree
Showing 228 changed files with 4,553 additions and 3,908 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,104 +35,116 @@ import org.gradle.api.plugins.JavaPluginConvention
import java.io.File
import javax.inject.Inject

class GluecodiumPlugin @Inject constructor(private val objectFactory: ObjectFactory) : Plugin<Project> {

override fun apply(project: Project) {
val gluecodiumExtension =
project.extensions.create(GLUECODIUM_EXTENSION_NAME, GluecodiumExtension::class.java)

val javaGenerator: String
if (project.pluginManager.hasPlugin("com.android.base")) {
javaGenerator = "android"
applyAndroid(project, gluecodiumExtension)
} else {
javaGenerator = "java"
applyJava(project, gluecodiumExtension)
}
class GluecodiumPlugin
@Inject
constructor(private val objectFactory: ObjectFactory) : Plugin<Project> {
override fun apply(project: Project) {
val gluecodiumExtension =
project.extensions.create(GLUECODIUM_EXTENSION_NAME, GluecodiumExtension::class.java)

val javaGenerator: String
if (project.pluginManager.hasPlugin("com.android.base")) {
javaGenerator = "android"
applyAndroid(project, gluecodiumExtension)
} else {
javaGenerator = "java"
applyJava(project, gluecodiumExtension)
}

project.tasks.register(GLUECODIUM_TASK_NAME, GluecodiumTask::class.java) {
it.description = "Processes Gluecodium IDL files"
it.javaGenerator = javaGenerator
propagateExtensionProperties(it, gluecodiumExtension)
project.tasks.register(GLUECODIUM_TASK_NAME, GluecodiumTask::class.java) {
it.description = "Processes Gluecodium IDL files"
it.javaGenerator = javaGenerator
propagateExtensionProperties(it, gluecodiumExtension)
}
}
}

private fun applyAndroid(project: Project, gluecodiumExtension: GluecodiumExtension) {
val androidExtension = project.extensions.getByName("android") as BaseExtension
private fun applyAndroid(
project: Project,
gluecodiumExtension: GluecodiumExtension,
) {
val androidExtension = project.extensions.getByName("android") as BaseExtension

val sourceSets = androidExtension.sourceSets
sourceSets.forEach { it.java.srcDir(gluecodiumExtension.outputDirectory) }
setDefaultGluecodiumSources(project, gluecodiumExtension, sourceSets.map { it.name })
val sourceSets = androidExtension.sourceSets
sourceSets.forEach { it.java.srcDir(gluecodiumExtension.outputDirectory) }
setDefaultGluecodiumSources(project, gluecodiumExtension, sourceSets.map { it.name })

project.afterEvaluate { injectGluecodiumTask(androidExtension) }
}

private fun applyJava(project: Project, gluecodiumExtension: GluecodiumExtension) {
project.pluginManager.apply(JavaPlugin::class.java)

val sourceSets = project.convention.getPlugin(JavaPluginConvention::class.java)
.sourceSets
.filterIsInstance<DefaultSourceSet>()
sourceSets.forEach { it.java.srcDir(gluecodiumExtension.outputDirectory) }
setDefaultGluecodiumSources(project, gluecodiumExtension, sourceSets.map { it.name })
project.afterEvaluate { injectGluecodiumTask(androidExtension) }
}

sourceSets.forEach { sourceSet ->
project.tasks.named(sourceSet.compileJavaTaskName) { compileTask ->
compileTask.dependsOn(GLUECODIUM_TASK_NAME)
private fun applyJava(
project: Project,
gluecodiumExtension: GluecodiumExtension,
) {
project.pluginManager.apply(JavaPlugin::class.java)

val sourceSets =
project.convention.getPlugin(JavaPluginConvention::class.java)
.sourceSets
.filterIsInstance<DefaultSourceSet>()
sourceSets.forEach { it.java.srcDir(gluecodiumExtension.outputDirectory) }
setDefaultGluecodiumSources(project, gluecodiumExtension, sourceSets.map { it.name })

sourceSets.forEach { sourceSet ->
project.tasks.named(sourceSet.compileJavaTaskName) { compileTask ->
compileTask.dependsOn(GLUECODIUM_TASK_NAME)
}
}
}
}

private fun setDefaultGluecodiumSources(
project: Project,
gluecodiumExtension: GluecodiumExtension,
sourceSetNames: List<String>
) {
val defaultSources = sourceSetNames.map { "${project.rootDir}/src/$it/$GLUECODIUM_DIR_NAME" }
gluecodiumExtension.source.convention(project.files(defaultSources).asFileTree)
gluecodiumExtension.outputDirectory.convention(
File("${project.buildDir}/generated-src/$GLUECODIUM_DIR_NAME")
)
}

private fun propagateExtensionProperties(task: GluecodiumTask, gluecodiumExtension: GluecodiumExtension) {
task.source(gluecodiumExtension.source)
task.outputDirectory.set(gluecodiumExtension.outputDirectory)
task.commonOutputDirectory.set(gluecodiumExtension.commonOutputDirectory)
task.auxiliarySource.set(gluecodiumExtension.auxiliarySource)
task.copyrightHeaderFile.set(gluecodiumExtension.copyrightHeaderFile)
task.javaPackage.set(gluecodiumExtension.javaPackage)
task.javaInternalPackage.set(gluecodiumExtension.javaInternalPackage)
task.javaNameRules.set(gluecodiumExtension.javaNameRules)
task.javaNonNullAnnotation.set(gluecodiumExtension.javaNonNullAnnotation)
task.javaNullableAnnotation.set(gluecodiumExtension.javaNullableAnnotation)
task.cppNamespace.set(gluecodiumExtension.cppNamespace)
task.cppInternalNamespace.set(gluecodiumExtension.cppInternalNamespace)
task.cppExportMacroName.set(gluecodiumExtension.cppExportMacroName)
task.cppNameRules.set(gluecodiumExtension.cppNameRules)
}
private fun setDefaultGluecodiumSources(
project: Project,
gluecodiumExtension: GluecodiumExtension,
sourceSetNames: List<String>,
) {
val defaultSources = sourceSetNames.map { "${project.rootDir}/src/$it/$GLUECODIUM_DIR_NAME" }
gluecodiumExtension.source.convention(project.files(defaultSources).asFileTree)
gluecodiumExtension.outputDirectory.convention(
File("${project.buildDir}/generated-src/$GLUECODIUM_DIR_NAME"),
)
}

private fun injectGluecodiumTask(androidExtension: BaseExtension) {
val variants = when (androidExtension) {
is AppExtension -> androidExtension.applicationVariants
is LibraryExtension -> androidExtension.libraryVariants
else -> emptyList<BaseVariant>()
private fun propagateExtensionProperties(
task: GluecodiumTask,
gluecodiumExtension: GluecodiumExtension,
) {
task.source(gluecodiumExtension.source)
task.outputDirectory.set(gluecodiumExtension.outputDirectory)
task.commonOutputDirectory.set(gluecodiumExtension.commonOutputDirectory)
task.auxiliarySource.set(gluecodiumExtension.auxiliarySource)
task.copyrightHeaderFile.set(gluecodiumExtension.copyrightHeaderFile)
task.javaPackage.set(gluecodiumExtension.javaPackage)
task.javaInternalPackage.set(gluecodiumExtension.javaInternalPackage)
task.javaNameRules.set(gluecodiumExtension.javaNameRules)
task.javaNonNullAnnotation.set(gluecodiumExtension.javaNonNullAnnotation)
task.javaNullableAnnotation.set(gluecodiumExtension.javaNullableAnnotation)
task.cppNamespace.set(gluecodiumExtension.cppNamespace)
task.cppInternalNamespace.set(gluecodiumExtension.cppInternalNamespace)
task.cppExportMacroName.set(gluecodiumExtension.cppExportMacroName)
task.cppNameRules.set(gluecodiumExtension.cppNameRules)
}
val testVariants =
variants.filterIsInstance<TestedVariant>().mapNotNull { it.testVariant }

val allVariants = variants + testVariants
for (variant in allVariants) {
val taskProviders = variant.externalNativeBuildProviders + variant.javaCompileProvider
for (taskProvider in taskProviders) {
taskProvider.configure { it.dependsOn(GLUECODIUM_TASK_NAME) }

private fun injectGluecodiumTask(androidExtension: BaseExtension) {
val variants =
when (androidExtension) {
is AppExtension -> androidExtension.applicationVariants
is LibraryExtension -> androidExtension.libraryVariants
else -> emptyList<BaseVariant>()
}
val testVariants =
variants.filterIsInstance<TestedVariant>().mapNotNull { it.testVariant }

val allVariants = variants + testVariants
for (variant in allVariants) {
val taskProviders = variant.externalNativeBuildProviders + variant.javaCompileProvider
for (taskProvider in taskProviders) {
taskProvider.configure { it.dependsOn(GLUECODIUM_TASK_NAME) }
}
}
}
}

companion object {
private const val GLUECODIUM_DIR_NAME = "gluecodium"
private const val GLUECODIUM_EXTENSION_NAME = "gluecodium"
private const val GLUECODIUM_TASK_NAME = "generateGluecodiumSources"
companion object {
private const val GLUECODIUM_DIR_NAME = "gluecodium"
private const val GLUECODIUM_EXTENSION_NAME = "gluecodium"
private const val GLUECODIUM_TASK_NAME = "generateGluecodiumSources"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,12 @@ internal class GluecodiumRunner(
private val gluecodiumFactory: (GluecodiumOptions, GeneratorOptions) -> Gluecodium =
{ gluecodiumOptions: GluecodiumOptions, generatorOptions: GeneratorOptions ->
Gluecodium(gluecodiumOptions, generatorOptions)
}
},
) {
fun run(gluecodiumOptions: GluecodiumOptions, generatorOptions: GeneratorOptions) {
fun run(
gluecodiumOptions: GluecodiumOptions,
generatorOptions: GeneratorOptions,
) {
val executionResult = gluecodiumFactory(gluecodiumOptions, generatorOptions).execute()
if (!executionResult) {
throw GradleException("Gluecodium code generation failed. See log for details.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,18 @@ open class GluecodiumTask : SourceTask() {
logProperty("cppNamespace", cppNamespace)
logProperty("cppInternalNamespace", cppInternalNamespace)
logProperty(
"cppExportMacroName", cppExportMacroName,
DEFAULT_VALUE_STRING + " " + GeneratorOptions.DEFAULT_CPP_EXPORT_MACRO_NAME
"cppExportMacroName",
cppExportMacroName,
DEFAULT_VALUE_STRING + " " + GeneratorOptions.DEFAULT_CPP_EXPORT_MACRO_NAME,
)
logProperty("cppNameRules", cppNameRules, DEFAULT_VALUE_STRING)
}

private fun logProperty(optionName: String, property: Property<*>, defaultValue: String = "") {
private fun logProperty(
optionName: String,
property: Property<*>,
defaultValue: String = "",
) {
logger.debug(GLUECODIUM_OPTIONS_FORMAT, optionName, property.orNull ?: defaultValue)
}

Expand Down
57 changes: 34 additions & 23 deletions gluecodium/src/main/java/com/here/gluecodium/Gluecodium.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,19 @@ import kotlin.system.exitProcess
class Gluecodium(
private val gluecodiumOptions: GluecodiumOptions,
private val generatorOptions: GeneratorOptions,
private val modelLoader: LimeModelLoader = LimeModelLoader.getLoaders().first()
private val modelLoader: LimeModelLoader = LimeModelLoader.getLoaders().first(),
) {
internal val cache = SplitSourceSetCache(
gluecodiumOptions.outputDir,
gluecodiumOptions.commonOutputDir,
gluecodiumOptions.isEnableCaching
)
internal val cache =
SplitSourceSetCache(
gluecodiumOptions.outputDir,
gluecodiumOptions.commonOutputDir,
gluecodiumOptions.isEnableCaching,
)

init {
try {
LogManager.getLogManager().readConfiguration(
Gluecodium::class.java.classLoader.getResourceAsStream("logging.properties")
Gluecodium::class.java.classLoader.getResourceAsStream("logging.properties"),
)
} catch (e: IOException) {
e.printStackTrace()
Expand Down Expand Up @@ -115,7 +116,7 @@ class Gluecodium(
internal fun executeGenerator(
generatorName: String,
limeModel: LimeModel,
fileNamesCache: MutableMap<String, String>
fileNamesCache: MutableMap<String, String>,
): Boolean {
LOGGER.fine("Using generator '$generatorName'")
val generator = Generator.initializeGenerator(generatorName, generatorOptions)
Expand All @@ -125,12 +126,13 @@ class Gluecodium(
}
LOGGER.fine("Initialized generator '$generatorName'")

val outputFiles = try {
generator.generate(limeModel)
} catch (e: LimeModelLoaderException) {
LOGGER.severe(e.message)
return false
}
val outputFiles =
try {
generator.generate(limeModel)
} catch (e: LimeModelLoaderException) {
LOGGER.severe(e.message)
return false
}

val outputSuccessful = output(generatorName, outputFiles)
val processedWithoutCollisions = checkForFileNameCollisions(fileNamesCache, outputFiles, generatorName)
Expand All @@ -149,7 +151,10 @@ class Gluecodium(
return generators
}

internal fun output(generatorName: String, files: List<GeneratedFile>): Boolean {
internal fun output(
generatorName: String,
files: List<GeneratedFile>,
): Boolean {
val filesToBeWritten = cache.updateCache(generatorName, files)
val mainFiles = filesToBeWritten.filter { it.sourceSet == GeneratedFile.SourceSet.MAIN }
val commonFiles = filesToBeWritten.filter { it.sourceSet == GeneratedFile.SourceSet.COMMON }
Expand All @@ -163,8 +168,9 @@ class Gluecodium(
LimeModelFilter.filter(limeModel) { LimeModelSkipPredicates.shouldRetainElement(it, generatorOptions.tags) }
val limeLogger = LimeLogger(LOGGER, filteredModel.fileNameMap)
val typeRefsValidationResult = LimeTypeRefsValidator(limeLogger).validate(filteredModel)
val validators = getIndependentValidators(limeLogger) +
if (typeRefsValidationResult) getTypeRefDependentValidators(limeLogger) else emptyList()
val validators =
getIndependentValidators(limeLogger) +
if (typeRefsValidationResult) getTypeRefDependentValidators(limeLogger) else emptyList()
val validationResults = validators.map { it.invoke(filteredModel) }
return typeRefsValidationResult && !validationResults.contains(false)
}
Expand All @@ -179,7 +185,7 @@ class Gluecodium(
{ LimeFunctionsValidator(limeLogger).validate(it) },
{ LimeOptimizedListsValidator(limeLogger).validate(it) },
{ LimeFieldConstructorsValidator(limeLogger).validate(it) },
{ LimeValuesValidator(limeLogger).validate(it) }
{ LimeValuesValidator(limeLogger).validate(it) },
)

private fun getIndependentValidators(limeLogger: LimeLogger) =
Expand All @@ -189,7 +195,7 @@ class Gluecodium(
{ LimePropertiesValidator(limeLogger).validate(it) },
{ LimeFunctionsValidator(limeLogger).validate(it) },
{ LimeSkipValidator(limeLogger).validate(it) },
{ LimeAsyncValidator(limeLogger).validate(it) }
{ LimeAsyncValidator(limeLogger).validate(it) },
)

companion object {
Expand All @@ -210,7 +216,7 @@ class Gluecodium(
private fun checkForFileNameCollisions(
fileNamesCache: MutableMap<String, String>,
files: List<GeneratedFile>,
generatorName: String
generatorName: String,
): Boolean {
var succeeded = true
for (file in files) {
Expand All @@ -222,16 +228,21 @@ class Gluecodium(
LOGGER.severe(
String.format(
"Generator '%s' is overwriting file %s created already by '%s' ",
generatorName, path, previousEntry
)
generatorName,
path,
previousEntry,
),
)
succeeded = false
}
}
return succeeded
}

private fun saveToDirectory(outputDir: String, files: List<GeneratedFile>): Boolean {
private fun saveToDirectory(
outputDir: String,
files: List<GeneratedFile>,
): Boolean {
try {
FileOutput(File(outputDir)).output(files)
} catch (ignored: IOException) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ data class GluecodiumOptions(
var generators: Set<String> = setOf(),
var isValidatingOnly: Boolean = false,
var isEnableCaching: Boolean = false,
var isStrictMode: Boolean = false
var isStrictMode: Boolean = false,
)
Loading

0 comments on commit b447e55

Please sign in to comment.