Command Line Guide
This guide introduces several features that are useful if your primary purpose is to support command line configuration with the args that are passed through via your main method
The code below defines an Arkenv instance with several arguments which showcase distinct functionality.
class Arguments : Arkenv() {
val country: String by argument {
description = "A simple String (required)"
}
val bool: Boolean by argument("-b") {
description = "A bool, which will be false by default"
}
val port: Int by argument {
description = "An Int with a default value"
defaultValue = { 5000 }
}
val nullInt: Int? by argument {
description = "A nullable Int, which doesn't have to be declared"
}
val mapped: List<String> by argument("-m") {
description = "Complex types can be achieved with a mapping"
mapping = { it.split("|") }
}
val mainString: String by mainArgument {
description = "This is a main arg, so no names"
}
}
Each argument declares a description
, which explains its significance.
This description is included when calling toString()
on the instance.
Here is a valid example of how to parse these arguments from the command line, assuming your jar is called App.jar:
java -jar App.jar --country DK -m hello|world port=6060 "last argument means main!"
This results in the following:
country
will be assignedDK
bool
will remainfalse
port
will be6060
instead of its default valuenullInt
will benull
mapped
will be[hello, world]
mainString
will take up the last argument:last argument means main!