| /* |
| * 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.kotlin.builder.model |
| |
| import com.google.protobuf.util.JsonFormat |
| import io.bazel.kotlin.builder.* |
| import io.bazel.kotlin.model.KotlinModel |
| |
| /** |
| * The flags supported by the worker. |
| */ |
| class Flags(argMap: ArgMap) { |
| val label = argMap.mandatorySingle(JavaBuilderFlags.TARGET_LABEL.flag) |
| val ruleKind = argMap.mandatorySingle(JavaBuilderFlags.RULE_KIND.flag) |
| |
| val classDir = argMap.lazilyCreatedDirectory(JavaBuilderFlags.CLASSDIR.flag) |
| val tempDirPath = argMap.lazilyCreatedDirectory(JavaBuilderFlags.TEMPDIR.flag) |
| val sourceGenDir = argMap.lazilyCreatedDirectory(JavaBuilderFlags.SOURCEGEN_DIR.flag) |
| |
| // val strictJavaDeps = argMap.mandatorySingle(JavaBuilderFlags.STRICT_JAVA_DEPS.flag) |
| val outputClassJar = argMap.mandatorySingle(JavaBuilderFlags.OUTPUT.flag) |
| |
| val source = argMap.optional(JavaBuilderFlags.SOURCES.flag) |
| val sourceJars = argMap.optional(JavaBuilderFlags.SOURCE_JARS.flag) |
| |
| val classpath = argMap.mandatory(JavaBuilderFlags.CLASSPATH.flag) |
| val plugins: KotlinModel.CompilerPlugins? = argMap.optionalSingle("--kt-plugins")?.let { input -> |
| KotlinModel.CompilerPlugins.newBuilder().let { |
| jsonFormat.merge(input, it) |
| it.build() |
| } |
| } |
| |
| val outputJdeps = argMap.mandatorySingle("--output_jdeps") |
| |
| val kotlinApiVersion = argMap.mandatorySingle("--kotlin_api_version") |
| val kotlinLanguageVersion = argMap.mandatorySingle("--kotlin_language_version") |
| val kotlinJvmTarget = argMap.mandatorySingle("--kotlin_jvm_target") |
| |
| /** |
| * These flags are passed through to the compiler verbatim, the rules ensure they are safe. These flags are to toggle features or they carry a single value |
| * so the string is tokenized by space. |
| */ |
| val kotlinPassthroughFlags = argMap.optionalSingle("--kotlin_passthrough_flags") |
| |
| val kotlinModuleName = argMap.optionalSingle("--kotlin_module_name") |
| |
| companion object { |
| @JvmStatic |
| private val jsonTypeRegistry = JsonFormat.TypeRegistry.newBuilder() |
| .add(KotlinModel.getDescriptor().messageTypes).build() |
| |
| @JvmStatic |
| private val jsonFormat = JsonFormat.parser().usingTypeRegistry(jsonTypeRegistry) |
| } |
| } |