fun parseArgs()

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}")
            }
        }
    }