commonMain.term.TermGnome.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kommandline-jvm Show documentation
Show all versions of kommandline-jvm Show documentation
Kotlin DSL for popular CLI commands.
The newest version!
@file:Suppress("ClassName")
package pl.mareklangiewicz.kommand.term
import pl.mareklangiewicz.annotations.DelicateApi
import pl.mareklangiewicz.kommand.*
import pl.mareklangiewicz.kommand.term.TermGnomeOpt.*
@OptIn(DelicateApi::class)
fun Kommand.inTermGnome(): TermGnome = termGnome(this)
/** [gnome-terminal ubuntu manpage](http://manpages.ubuntu.com/manpages/impish/man1/gnome-terminal.1.html) */
@OptIn(DelicateApi::class)
fun termGnome(kommand: Kommand? = null, init: TermGnome.() -> Unit = {}): TermGnome =
TermGnome().apply {
init()
kommand?.let { -EOOpt; nonopts.addAll(kommand.toArgs()) }
}
/** [gnome-terminal ubuntu manpage](http://manpages.ubuntu.com/manpages/impish/man1/gnome-terminal.1.html) */
@DelicateApi
data class TermGnome(
override val opts: MutableList = mutableListOf(),
override val nonopts: MutableList = mutableListOf(),
) : KommandTypical, TermKommand {
override val name get() = "gnome-terminal"
}
@OptIn(DelicateApi::class)
interface TermGnomeOpt : KOptTypical {
// region [GNU Common Opts]
// https://www.gnu.org/software/coreutils/manual/html_node/Common-options.html
data object Help : KOptLN(), TermGnomeOpt // Don't risk short -h (ambiguity: sudo -h host; ls -h (human-readable), etc.)
data object Version : KOptLN(), TermGnomeOpt // Don't risk short -v (ambiguity with "verbose" for many commands)
data object EOOpt : KOptL(""), TermGnomeOpt
// endregion [GNU Common Opts]
data class Title(val title: String) : KOptLN(title), TermGnomeOpt
data object Verbose : TermGnomeOpt, KOptLN() // Don't risk short -v (ambiguity with "version")
}