All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.exoquery.terpal.plugin.CliProcessor.kt Maven / Gradle / Ivy

package io.exoquery.terpal.plugin

import com.google.auto.service.AutoService
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
import org.jetbrains.kotlin.compiler.plugin.CliOption
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
import org.jetbrains.kotlin.config.CompilerConfiguration

@AutoService(CommandLineProcessor::class)
@OptIn(ExperimentalCompilerApi::class)
class CliProcessor: CommandLineProcessor {
    override val pluginId: String = "io.exoquery.terpal-plugin"

    override val pluginOptions: Collection = listOf(
        CliOption(
            optionName = "projectDir",
            valueDescription = "path",
            description = "root project path",
            required = false,
        ),
        CliOption(
            optionName = "traceWrappers",
            valueDescription = "boolean",
            description = "trace auto-wrapping functions",
            required = false,
        )
    )

    override fun processOption(
        option: AbstractCliOption,
        value: String,
        configuration: CompilerConfiguration
    ) {
        return when (option.optionName) {
            OptionKeys.TraceWrappers.name -> configuration.put(OptionKeys.TraceWrappers.compilerKey, value.toBoolean())
            "projectDir" -> configuration.put(PROJECT_DIR_KEY, value)
            else -> throw IllegalArgumentException("Unexpected config option ${option.optionName}")
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy