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