in code/codegen/src/main/kotlin/com/android/gradle/replicator/parsing/ArgsParser.kt [68:102]
fun parseArgs(args: Array<String>) {
var lastOption: Option? = null
args.forEach { arg ->
if (arg.startsWith("--")) {
// Sanity check
if (!longNameOpts.containsKey(arg)) {
throw java.lang.IllegalArgumentException("invalid argument $arg")
}
if (longNameOpts[arg]!!.isPresent) {
throw java.lang.IllegalArgumentException("option used twice $arg")
}
lastOption = longNameOpts[arg]!!
lastOption!!.isPresent = true
} else if (arg.startsWith("-") && arg.toIntOrNull() == null) {
// Sanity check
if (!shortNameOpts.containsKey(arg)) {
throw java.lang.IllegalArgumentException("invalid argument $arg")
}
if (shortNameOpts[arg]!!.isPresent) {
throw java.lang.IllegalArgumentException("option used twice $arg")
}
lastOption = shortNameOpts[arg]!!
lastOption!!.isPresent = true
} else {
lastOption!!.argv.add(arg)
}
}
// Post-parse sanity check
(shortNameOpts + longNameOpts).forEach { opt ->
if (opt.value.isPresent && opt.value.argv.size != UNLIMITED_ARGC && opt.value.argv.size != opt.value.argc) {
throw java.lang.IllegalArgumentException("wrong # of args for ${opt.key}. Expected ${opt.value.argc} but got ${opt.value.argv.size}")
}
}
}