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.model.builder 19 20 import com.google.devtools.ksp.gradle.KspExtension 21 import com.google.devtools.ksp.gradle.model.Ksp 22 import com.google.devtools.ksp.gradle.model.impl.KspImpl 23 import org.gradle.api.Project 24 import org.gradle.tooling.provider.model.ToolingModelBuilder 25 26 /** 27 * [ToolingModelBuilder] for [Ksp] models. 28 * This model builder is registered for Kotlin All Open sub-plugin. 29 */ 30 class KspModelBuilder : ToolingModelBuilder { 31 canBuildnull32 override fun canBuild(modelName: String): Boolean { 33 return modelName == Ksp::class.java.name 34 } 35 buildAllnull36 override fun buildAll(modelName: String, project: Project): Any? { 37 if (modelName == Ksp::class.java.name) { 38 val extension = project.extensions.getByType(KspExtension::class.java) 39 return KspImpl(project.name) 40 } 41 return null 42 } 43 } 44