[Commonizer] move commonizer setting keys to the commonizer-cli module

Get rid of `OptionAlias` as unnecessary; keys will be used directly
This commit is contained in:
Pavel Kirpichenkov
2022-01-26 20:47:12 +03:00
parent b17737d7de
commit a220624769
25 changed files with 83 additions and 100 deletions
@@ -29,21 +29,21 @@ public class CliCommonizer(private val executor: Executor) : NativeDistributionC
outputTargets: Set<SharedCommonizerTarget>,
outputDirectory: File,
logLevel: CommonizerLogLevel,
additionalSettings: List<AdditionalCommonizerSetting>,
additionalSettings: List<AdditionalCommonizerSetting<*>>,
) {
if (inputLibraries.isEmpty()) return
val arguments = mutableListOf<String>().apply {
add("native-klib-commonize")
add(NATIVE_DISTRIBUTION_OPTION_ALIAS.argumentString); add(konanHome.absolutePath)
add(INPUT_LIBRARIES_OPTION_ALIAS.argumentString); add(inputLibraries.joinToString(";") { it.absolutePath })
add(OUTPUT_COMMONIZER_TARGET_OPTION_ALIAS.argumentString); add(outputTargets.joinToString(";") { it.identityString })
add(OUTPUT_OPTION_ALIAS.argumentString); add(outputDirectory.absolutePath)
add("-$NATIVE_DISTRIBUTION_PATH_ALIAS"); add(konanHome.absolutePath)
add("-$INPUT_LIBRARIES_ALIAS"); add(inputLibraries.joinToString(";") { it.absolutePath })
add("-$OUTPUT_COMMONIZER_TARGETS_ALIAS"); add(outputTargets.joinToString(";") { it.identityString })
add("-$OUTPUT_PATH_ALIAS"); add(outputDirectory.absolutePath)
if (dependencyLibraries.isNotEmpty()) {
add(DEPENDENCY_LIBRARIES_OPTION_ALIAS.argumentString); add(dependencyLibraries.joinToString(";"))
add("-$DEPENDENCY_LIBRARIES_ALIAS"); add(dependencyLibraries.joinToString(";"))
}
add(LOG_LEVEL_OPTION_ALIAS.argumentString); add(logLevel.name.lowercase())
for ((settingArgument, settingValue) in additionalSettings) {
add(settingArgument); add(settingValue.toString())
add("-$LOG_LEVEL_ALIAS"); add(logLevel.name.lowercase())
for ((settingKey, settingValue) in additionalSettings) {
add("-${settingKey.alias}"); add(settingValue.toString())
}
}
executor(arguments)
@@ -54,16 +54,16 @@ public class CliCommonizer(private val executor: Executor) : NativeDistributionC
outputDirectory: File,
outputTargets: Set<SharedCommonizerTarget>,
logLevel: CommonizerLogLevel,
additionalSettings: List<AdditionalCommonizerSetting>,
additionalSettings: List<AdditionalCommonizerSetting<*>>,
) {
val arguments = mutableListOf<String>().apply {
add("native-dist-commonize")
add(NATIVE_DISTRIBUTION_OPTION_ALIAS.argumentString); add(konanHome.absolutePath)
add(OUTPUT_OPTION_ALIAS.argumentString); add(outputDirectory.absolutePath)
add(OUTPUT_COMMONIZER_TARGET_OPTION_ALIAS.argumentString); add(outputTargets.joinToString(";") { it.identityString })
add(LOG_LEVEL_OPTION_ALIAS.argumentString); add(logLevel.name.lowercase())
for ((settingArgument, settingValue) in additionalSettings) {
add(settingArgument); add(settingValue.toString())
add("-$NATIVE_DISTRIBUTION_PATH_ALIAS"); add(konanHome.absolutePath)
add("-$OUTPUT_PATH_ALIAS"); add(outputDirectory.absolutePath)
add("-$OUTPUT_COMMONIZER_TARGETS_ALIAS"); add(outputTargets.joinToString(";") { it.identityString })
add("-$LOG_LEVEL_ALIAS"); add(logLevel.name.lowercase())
for ((settingKey, settingValue) in additionalSettings) {
add("-${settingKey.alias}"); add(settingValue.toString())
}
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.commonizer
import org.jetbrains.kotlin.commonizer.cli.OptionAlias
import java.io.File
import java.io.Serializable
@@ -18,7 +17,7 @@ public interface CInteropCommonizer : Serializable {
outputTargets: Set<SharedCommonizerTarget>,
outputDirectory: File,
logLevel: CommonizerLogLevel = CommonizerLogLevel.Quiet,
additionalSettings: List<AdditionalCommonizerSetting> = emptyList(),
additionalSettings: List<AdditionalCommonizerSetting<*>> = emptyList(),
)
}
@@ -29,14 +28,14 @@ public interface NativeDistributionCommonizer : Serializable {
outputDirectory: File,
outputTargets: Set<SharedCommonizerTarget>,
logLevel: CommonizerLogLevel = CommonizerLogLevel.Quiet,
additionalSettings: List<AdditionalCommonizerSetting> = emptyList(),
additionalSettings: List<AdditionalCommonizerSetting<*>> = emptyList(),
)
}
public data class AdditionalCommonizerSetting(
public val key: String,
public val value: Any,
public data class AdditionalCommonizerSetting<T : Any>(
public val key: CommonizerSettings.Key<T>,
public val value: T,
)
public infix fun OptionAlias.setTo(settingValue: Any): AdditionalCommonizerSetting =
AdditionalCommonizerSetting(this.argumentString, settingValue)
public infix fun <T : Any> CommonizerSettings.Key<T>.setTo(settingValue: T): AdditionalCommonizerSetting<T> =
AdditionalCommonizerSetting(this, settingValue)
@@ -0,0 +1,24 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.commonizer
import org.jetbrains.kotlin.commonizer.cli.OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_ALIAS
public interface CommonizerSettings {
public sealed class Key<T : Any> {
public abstract val defaultValue: T
public abstract val alias: String
}
public fun <T : Any> getSetting(key: Key<T>): T
}
public object OptimisticNumberCommonizationEnabledKey : CommonizerSettings.Key<Boolean>() {
override val defaultValue: Boolean = true
override val alias: String
get() = OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_ALIAS
}
@@ -7,37 +7,16 @@ package org.jetbrains.kotlin.commonizer.cli
// General
private const val DEPENDENCY_LIBRARIES_ALIAS: String = "dependency-libraries"
private const val INPUT_LIBRARIES_ALIAS: String = "input-libraries"
private const val LOG_LEVEL_ALIAS: String = "log-level"
private const val NATIVE_DISTRIBUTION_PATH_ALIAS: String = "distribution-path"
private const val OUTPUT_COMMONIZER_TARGETS_ALIAS: String = "output-targets"
private const val OUTPUT_PATH_ALIAS: String = "output-path"
private const val STATS_TYPE_ALIAS: String = "log-stats"
private const val NATIVE_TARGETS_ALIAS: String = "targets"
private const val COPY_STDLIB_ALIAS: String = "copy-stdlib"
private const val COPY_ENDORSED_LIBS_ALIAS: String = "copy-endorsed-libs"
public val DEPENDENCY_LIBRARIES_OPTION_ALIAS: OptionAlias = OptionAlias(DEPENDENCY_LIBRARIES_ALIAS)
public val INPUT_LIBRARIES_OPTION_ALIAS: OptionAlias = OptionAlias(INPUT_LIBRARIES_ALIAS)
public val LOG_LEVEL_OPTION_ALIAS: OptionAlias = OptionAlias(LOG_LEVEL_ALIAS)
public val NATIVE_DISTRIBUTION_OPTION_ALIAS: OptionAlias = OptionAlias(NATIVE_DISTRIBUTION_PATH_ALIAS)
public val OUTPUT_COMMONIZER_TARGET_OPTION_ALIAS: OptionAlias = OptionAlias(OUTPUT_COMMONIZER_TARGETS_ALIAS)
public val OUTPUT_OPTION_ALIAS: OptionAlias = OptionAlias(OUTPUT_PATH_ALIAS)
public val STATS_TYPE_OPTION_ALIAS: OptionAlias = OptionAlias(STATS_TYPE_ALIAS)
public val NATIVE_TARGETS_OPTION_ALIAS: OptionAlias = OptionAlias(NATIVE_TARGETS_ALIAS)
public val COPY_STDLIB_OPTION_ALIAS: OptionAlias = OptionAlias(COPY_STDLIB_ALIAS)
public val COPY_ENDORSED_LIBS_OPTION_ALIAS: OptionAlias = OptionAlias(COPY_ENDORSED_LIBS_ALIAS)
public const val DEPENDENCY_LIBRARIES_ALIAS: String = "dependency-libraries"
public const val INPUT_LIBRARIES_ALIAS: String = "input-libraries"
public const val LOG_LEVEL_ALIAS: String = "log-level"
public const val NATIVE_DISTRIBUTION_PATH_ALIAS: String = "distribution-path"
public const val OUTPUT_COMMONIZER_TARGETS_ALIAS: String = "output-targets"
public const val OUTPUT_PATH_ALIAS: String = "output-path"
public const val STATS_TYPE_ALIAS: String = "log-stats"
public const val NATIVE_TARGETS_ALIAS: String = "targets"
public const val COPY_STDLIB_ALIAS: String = "copy-stdlib"
public const val COPY_ENDORSED_LIBS_ALIAS: String = "copy-endorsed-libs"
// Commonizer settings
private const val OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_ALIAS: String = "optimistic-numbers"
public val OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_OPTION_ALIAS: OptionAlias = OptionAlias(OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_ALIAS)
@JvmInline
public value class OptionAlias(public val aliasString: String) {
public val argumentString: String
get() = "-$aliasString"
override fun toString(): String = aliasString
}
public const val OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_ALIAS: String = "optimistic-numbers"