
commonMain.com.github.ajalt.clikt.parameters.groups.CoOccurringOptionGroup.kt Maven / Gradle / Ivy
package com.github.ajalt.clikt.parameters.groups
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.Context
import com.github.ajalt.clikt.output.HelpFormatter
import com.github.ajalt.clikt.parameters.internal.NullableLateinit
import com.github.ajalt.clikt.parameters.options.Option
import com.github.ajalt.clikt.parsers.OptionParser
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
class CoOccurringOptionGroup(
internal val group: GroupT,
private val transform: (occurred: Boolean?, group: GroupT, context: Context) -> OutT
) : ParameterGroupDelegate {
override val groupName: String? get() = group.groupName
override val groupHelp: String? get() = group.groupHelp
private var value: OutT by NullableLateinit("Cannot read from option delegate before parsing command line")
private var occurred = false
override fun provideDelegate(thisRef: CliktCommand, prop: KProperty<*>): ReadOnlyProperty {
thisRef.registerOptionGroup(this)
for (option in group.options) {
option.parameterGroup = this
option.groupName = 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