1+ package org.jetbrains.kotlinx.spark.compilerPlugin
2+
3+ import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
4+ import org.jetbrains.kotlin.compiler.plugin.CliOption
5+ import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
6+ import org.jetbrains.kotlin.config.CompilerConfiguration
7+ import org.jetbrains.kotlin.config.CompilerConfigurationKey
8+ import org.jetbrains.kotlinx.spark.Artifacts
9+
10+ open class SparkifyCommandLineProcessor : CommandLineProcessor {
11+
12+ init {
13+ println (" SparkifyCommandLineProcessor loaded" )
14+ }
15+
16+ override val pluginId: String = Artifacts .compilerPluginId
17+
18+ override val pluginOptions: Collection <AbstractCliOption > = listOf (
19+ OPTION_ENABLED ,
20+ OPTION_SPARKIFY_ANNOTATION_FQ_NAMES ,
21+ OPTION_COLUMN_NAME_ANNOTATION_FQ_NAMES ,
22+ )
23+
24+ override fun processOption (option : AbstractCliOption , value : String , configuration : CompilerConfiguration ) {
25+ when (val optionName = option.optionName) {
26+ OPTION_ENABLED .optionName ->
27+ configuration.put(KEY_ENABLED , value.toBoolean())
28+
29+ OPTION_SPARKIFY_ANNOTATION_FQ_NAMES .optionName ->
30+ configuration.put(KEY_SPARKIFY_ANNOTATION_FQ_NAMES , value.split(" ," ).map { it.trim() })
31+
32+ OPTION_COLUMN_NAME_ANNOTATION_FQ_NAMES .optionName ->
33+ configuration.put(KEY_COLUMN_NAME_ANNOTATION_FQ_NAMES , value.split(" ," ).map { it.trim() })
34+
35+ else -> error(" Unexpected option: $optionName " )
36+ }
37+ }
38+ }
39+
40+ internal val KEY_ENABLED = CompilerConfigurationKey <Boolean >(" Whether to enable Sparkify" )
41+
42+ internal val OPTION_ENABLED = CliOption (
43+ optionName = " enabled" ,
44+ valueDescription = " <true|false>" ,
45+ description = " Whether to enable Sparkify" ,
46+ required = false ,
47+ allowMultipleOccurrences = false ,
48+ )
49+
50+ internal val KEY_SPARKIFY_ANNOTATION_FQ_NAMES = CompilerConfigurationKey <List <String >>(
51+ " Fully qualified names of annotations for Sparkify"
52+ )
53+
54+ internal val OPTION_SPARKIFY_ANNOTATION_FQ_NAMES = CliOption (
55+ optionName = " sparkifyAnnotationFqNames" ,
56+ valueDescription = " <fqName1,fqName2,...>" ,
57+ description = " Fully qualified names of annotations to sparkify" ,
58+ required = false ,
59+ allowMultipleOccurrences = false ,
60+ )
61+
62+ internal val KEY_COLUMN_NAME_ANNOTATION_FQ_NAMES = CompilerConfigurationKey <List <String >>(
63+ " Fully qualified names of annotations for ColumnName"
64+ )
65+
66+ internal val OPTION_COLUMN_NAME_ANNOTATION_FQ_NAMES = CliOption (
67+ optionName = " columnNameAnnotationFqNames" ,
68+ valueDescription = " <fqName1,fqName2,...>" ,
69+ description = " Fully qualified names of annotations for ColumnName" ,
70+ required = false ,
71+ allowMultipleOccurrences = false ,
72+ )
0 commit comments