defaultLazy

inline fun <T : Any> ProcessedArgument<T, T>.defaultLazy(defaultForHelp: String = "", crossinline value: () -> T): ArgumentDelegate<T>

If the argument is not given, call value and use its return value instead of throwing an error.

This must be applied after all other transforms. If the argument is given on the command line, value will not be called.

You can customize how the default is shown to the user with defaultForHelp. The default value is an empty string, so if you have the help formatter configured to show values, you should set this value manually.

Example:

val arg: Pair<Int, Int> by argument().int().pair().defaultLazy { expensiveOperation() }