fun parseArgs()

in benchmarks/multiplatform/benchmarks/src/commonMain/kotlin/Config.kt [33:69]


    fun parseArgs(args: Array<String>): Config {
        val modes = mutableSetOf<Mode>()
        val benchmarks = mutableMapOf<String, Int>()
        val disabledBenchmarks = mutableSetOf<String>()
        var versionInfo: String? = null
        var saveStatsToCSV: Boolean = false
        var saveStatsToJSON: Boolean = false
        var runServer: Boolean = false

        for (arg in args) {
            if (arg.startsWith("modes=", ignoreCase = true)) {
                modes.addAll(argToSet(arg.decodeArg()).map { Mode.valueOf(it) })
            } else if (arg.startsWith("benchmarks=", ignoreCase = true)) {
                benchmarks += argToMap(arg.decodeArg())
            } else if (arg.startsWith("versionInfo=", ignoreCase = true)) {
                versionInfo = arg.substringAfter("=").decodeArg()
            } else if (arg.startsWith("saveStatsToCSV=", ignoreCase = true)) {
                saveStatsToCSV = arg.substringAfter("=").toBoolean()
            } else if (arg.startsWith("saveStatsToJSON=", ignoreCase = true)) {
                saveStatsToJSON = arg.substringAfter("=").toBoolean()
            } else if (arg.startsWith("disabledBenchmarks=", ignoreCase = true)) {
                disabledBenchmarks += argToMap(arg.decodeArg()).keys
            } else if (arg.startsWith("runServer=", ignoreCase = true)) {
                runServer = arg.substringAfter("=").toBoolean()
            }
        }

        return Config(
            modes = modes,
            benchmarks = benchmarks,
            disabledBenchmarks = disabledBenchmarks,
            versionInfo = versionInfo,
            saveStatsToCSV = saveStatsToCSV,
            saveStatsToJSON = saveStatsToJSON,
            runServer = runServer,
        )
    }