| /* |
| * Copyright 2018 The Bazel Authors. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package io.bazel.ruleskotlin.workers.model |
| |
| import io.bazel.ruleskotlin.workers.MandatoryMeta |
| import java.nio.file.Files |
| import java.nio.file.Path |
| |
| sealed class CompileState |
| |
| /** |
| * Temporary output directories used durng compilation. |
| */ |
| class CompileDirectories(private val outputBase: Path) : CompileState() { |
| val classes by lazy { dir("_classes", create = true) } |
| |
| /** |
| * The generated sources that need to be compiled and included in the output jar. |
| */ |
| val annotationProcessingSources by lazy { dir("_ap_sources") } |
| /** |
| * Files other than sources that should be directly bundled into the output jar, this could be resources. |
| */ |
| val annotionProcessingClasses by lazy { dir("_ap_classes") } |
| val annotationProcessingStubs by lazy { dir("_ap_stubs") } |
| /** |
| * The classes generated in here are needed for javac to compile the generated sources. |
| */ |
| val annotationProcessingIncrementalData by lazy { dir("_ap_incremental_data") } |
| |
| private fun dir(component: String, create: Boolean = false): Path = outputBase.resolve(component).also { |
| if(create) { |
| Files.createDirectories(it) |
| } |
| } |
| |
| companion object: MandatoryMeta<CompileDirectories>("compile_directories") |
| } |
| |
| class CompilePluginConfig( |
| val hasAnnotationProcessors: Boolean = false, |
| val args: Array<String> = emptyArray() |
| ): CompileState() { |
| companion object: MandatoryMeta<CompilePluginConfig>("plugin_config", defaultValue = CompilePluginConfig()) |
| } |