in code/codegen/src/main/kotlin/com/android/gradle/replicator/parsing/ArgsParser.kt [109:135]
fun parsePropertyFile(propertyFile: File) {
val arguments = FileReader(propertyFile).use {
Properties().also { properties -> properties.load(it) }
}
arguments.forEach { arg ->
// Ignore invalid args
if (argsFileOpts.containsKey(arg.key)) {
val currentOption = argsFileOpts[arg.key]!!
// Override command line options
if (currentOption.isPresent) {
currentOption.argv.clear()
}
arg.value?.toString()?.split(",")?.let {
currentOption.argv.addAll(it)
}
currentOption.isPresent = true
}
}
// Post-parse sanity check
argsFileOpts.forEach { opt ->
if (opt.value.isPresent && opt.value.argc != 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}")
}
}
}