// configures the pluginManagement section of the settings file.
// each settings file applies this to its pluginManagement block so that we can
// do common configuration in 1 place before plugin classpaths are loaded.

def srcFile = buildscript.getSourceFile()
includeBuild new File(srcFile.parentFile, "playground-plugin").canonicalPath
repositories {
    mavenCentral()
    google {
        content {
            includeGroupByRegex("androidx.*")
            includeGroupByRegex("com\\.android.*")
            includeGroupByRegex("com\\.google.*")
        }
    }
    gradlePluginPortal()
    maven {
        url = "https://packages.jetbrains.team/maven/p/kt/dev/"
        content {
            includeGroupByRegex("org\\.jetbrains\\.kotlin.*")
        }
    }
}
