
commonMain.com.github.ajalt.clikt.parameters.groups.ChoiceGroup.kt Maven / Gradle / Ivy
package com.github.ajalt.clikt.parameters.groups
import com.github.ajalt.clikt.core.BadParameterValue
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.Context
import com.github.ajalt.clikt.core.MissingParameter
import com.github.ajalt.clikt.parameters.internal.NullableLateinit
import com.github.ajalt.clikt.parameters.options.Option
import com.github.ajalt.clikt.parameters.options.OptionDelegate
import com.github.ajalt.clikt.parameters.options.RawOption
import com.github.ajalt.clikt.parameters.options.switch
import com.github.ajalt.clikt.parameters.types.choice
import com.github.ajalt.clikt.parsers.OptionParser
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
class ChoiceGroup(
internal val option: OptionDelegate,
internal val groups: Map,
internal val transform: (GroupT?) -> OutT
) : ParameterGroupDelegate {
override val groupName: String? = null
override val groupHelp: String? = null
private var value: OutT by NullableLateinit("Cannot read from option delegate before parsing command line")
private var chosenGroup: OptionGroup? = null
override fun provideDelegate(thisRef: CliktCommand, prop: KProperty<*>): ReadOnlyProperty {
option.provideDelegate(thisRef, prop) // infer the option name and register it
thisRef.registerOptionGroup(this)
for ((_, group) in groups) {
for (option in group.options) {
option.parameterGroup = this
option.groupName = group.groupName
thisRef.registerOption(option)
}
}
return this
}
override fun getValue(thisRef: CliktCommand, property: KProperty<*>): OutT = value
override fun finalize(context: Context, invocationsByOption: Map
© 2015 - 2025 Weber Informatics LLC | Privacy Policy