Releases: ajalt/clikt
4.4.0
4.3.0
Added
- Added
limit
parameter tooption().counted()
to limit the number of times the option can be used. You can either clamp the value to the limit, or throw an error if the limit is exceeded. (#483) - Added
Context.registerClosable
andContext.callOnClose
to allow you to register cleanup actions that will be called when the command exits. (#395)
Fixed
4.2.2
4.2.1
Added
- Added
toString
implementations to options and arguments. (#434) - Added
CliktCommand.test
overload that takes a vararg ofString
s as the command line arguments. Thanks to @sschuberth for the contribution (#451)
Fixed
- Update Mordant dependency to fix crashes on native targets and GraalVM (#447)
4.2.0
Added
- Added
requireConfirmation
parameter tooption().prompt()
(#426) - Added
CliktCommand.terminal
extension for accessing the terminal from a command. - Added
includeSystemEnvvars
,ansiLevel
,width
, andheight
parameters to allCliktCommand.test
overloads.
Deprecated
- Deprecated
CliktCommand.prompt
, useCliktCommand.terminal.prompt
orPrompt
instead. - Deprecated
CliktCommand.confirm
, useYesNoPrompt
instead.
4.1.0
Added
- Added
MordantHelpFormatter.renderAttachedOptionValue
that you can override to change how option values are shown, e.g. if you want option to show as--option <value>
instead of--option=<value>
. (#416) - Added
option().optionalValueLazy{}
, which work likeoptionalValue()
but the default value is computed lazily. (#381)
Changed
- Updated Kotlin to 1.9.0
PrintMessage
,PrintHelpMessage
andPrintCompletionMessage
now default to exiting with a status code 0, which is the behavior they had in 3.x. (#419)
4.0.0
Clikt 4.0 is a major release that uses the Mordant library for help formatting. If you aren't
customizing help output, this upgrade will probably be source compatible.
Highlights
Here are some of the highlights of this release. See CHANGELOG.md
for a detailed list of changes.
Colors and Markdown in help output
All help strings now support markdown, including tables and lists. On terminals that support it,
help and error messages will be colored.
class Command : CliktCommand(
help="""
## This command uses markdown for its help text
- You can use lists
- You can use **bold** and *italic* text
- You can even use [links](https://example.com) on terminals that support them
| You | can | use | tables |
|-----------|--------|------|--------|
| and | they | will | be |
| formatted | nicely | for | you |
""".trimIndent()
)
$ ./command --help
Usage: command [<options>]
───── This command uses markdown for its help text ─────
• You can use lists
• You can use bold and italic text
• You can even use links on terminals that support them
┌───────────┬────────┬──────┬────────┐
│ You │ can │ use │ tables │
╞═══════════╪════════╪══════╪════════╡
│ and │ they │ will │ be │
├───────────┼────────┼──────┼────────┤
│ formatted │ nicely │ for │ you │
└───────────┴────────┴──────┴────────┘
There are new lazy extensions for setting paramter help that you can use to add color to parameter help text:
option().help { theme.info("this text will use the theme color") }
Optional and vararg values for options
You can now use optionalValue()
to create an option that can be used as a flag or with a value
val log by option().optionalValue("verbose").default("none")
> ./tool --log=debug
log level == debug
> ./tool --log
log level == verbose
> ./tool
log level == none
You can also use varargValues()
to create an option that accepts a variable number of values.
Streamlined error handling
Clikt's exceptions now all inherit from CliktError
, and the CliktCommand.getFormattedHelp
method renders them into strings for you. This makes customizing main
much easier. The default
implementation is now just:
fun main(argv: List<String>) {
try {
parse(argv)
} catch (e: CliktError) {
echoFormattedHelp(e)
exitProcess(e.statusCode)
}
}
4.0.0-RC
Clikt 4.0 is a major release that uses the Mordant library for help formatting. If you aren't
customizing help output, this upgrade will probably be source compatible.
Highlights
Here are some of the highlights of this release. See CHANGELOG.md
for a detailed list of changes.
Colors and Markdown in help output
All help strings now support markdown, including tables and lists. On terminals that support it,
help and error messages will be colored.
class Command : CliktCommand(
help="""
## This command uses markdown for its help text
- You can use lists
- You can use **bold** and *italic* text
- You can even use [links](https://example.com) on terminals that support them
| You | can | use | tables |
|-----------|--------|------|--------|
| and | they | will | be |
| formatted | nicely | for | you |
""".trimIndent()
)
$ ./command --help
Usage: command [<options>]
───── This command uses markdown for its help text ─────
• You can use lists
• You can use bold and italic text
• You can even use links on terminals that support them
┌───────────┬────────┬──────┬────────┐
│ You │ can │ use │ tables │
╞═══════════╪════════╪══════╪════════╡
│ and │ they │ will │ be │
├───────────┼────────┼──────┼────────┤
│ formatted │ nicely │ for │ you │
└───────────┴────────┴──────┴────────┘
Optional and vararg values for options
You can now use optionalValue()
to create an option that can be used as a flag or with a value
val log by option().optionalValue("verbose").default("none")
> ./tool --log=debug
log level == debug
> ./tool --log
log level == verbose
> ./tool
log level == none
You can also use varargValues()
to create an option that accepts a variable number of values.
Streamlined error handling
Clikt's exceptions now all inherit from CliktError
, and the CliktCommand.getFormattedHelp
method renders them into strings for you. This makes customizing main
much easier. The default
implementation is now just:
fun main(argv: List<String>) {
try {
parse(argv)
} catch (e: CliktError) {
echoFormattedHelp(e)
exitProcess(e.statusCode)
}
}