1 /* 2 * Copyright 2020 Google LLC 3 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package com.google.devtools.ksp.gradle 19 20 import org.gradle.api.GradleException 21 import org.gradle.process.CommandLineArgumentProvider 22 23 open class KspExtension { 24 internal val apOptions = mutableMapOf<String, String>() 25 internal val commandLineArgumentProviders = mutableListOf<CommandLineArgumentProvider>() 26 internal val excludedProcessors = mutableSetOf<String>() 27 28 open val arguments: Map<String, String> get() = apOptions.toMap() 29 argnull30 open fun arg(k: String, v: String) { 31 if ('=' in k) { 32 throw GradleException("'=' is not allowed in custom option's name.") 33 } 34 apOptions.put(k, v) 35 } 36 argnull37 open fun arg(arg: CommandLineArgumentProvider) { 38 commandLineArgumentProviders.add(arg) 39 } 40 41 @Deprecated("KSP will stop supporting other compiler plugins in KSP's Gradle tasks after 1.0.8.") 42 open var blockOtherCompilerPlugins: Boolean = true 43 44 // Instruct KSP to pickup sources from compile tasks, instead of source sets. 45 // Note that it depends on behaviors of other Gradle plugins, that may bring surprises and can be hard to debug. 46 // Use your discretion. 47 open var allowSourcesFromOtherPlugins: Boolean = false 48 49 // Treat all warning as errors. 50 open var allWarningsAsErrors: Boolean = false 51 52 // Keep processor providers from being called. Providers will still be loaded if they're in classpath. excludeProcessornull53 open fun excludeProcessor(fullyQualifiedName: String) { 54 excludedProcessors.add(fullyQualifiedName) 55 } 56 } 57