Defining a CLI
Declare parameters
 | @Parameters(index = "0", description = ["Name to greet"])
lateinit var name: String
@Parameters(index = "1", arity = "0..*", description = ["Additional files"])
lateinit var additional: List<Path>
  | 
 
Run like this: ./my-script a b c and name will be a, additional will be [b, c].
Declare named options
 | @Option(names = ["--config", "-c"], description = ["Config file."])
lateinit var someFile: Path
// Primitive types (booleans, numbers) shouldn't use 'lateinit'.
@Option(names = ["--toggle"])
var toggle: Boolean = false
  | 
 
Description
 | @file:Description("""
    A short description of what this script does, which will be included in the --help output.
""")
  | 
 
Arguments without using PicoCLI
 | @Parameters
lateinit var args: List<String>
  | 
 
More
See PicoCLI.