[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:
@@ -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
|
||||
}
|
||||
+11
-32
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user