// see ../playground-common/README.md for details on how this works
pluginManagement {
    includeBuild "../playground-common/playground-plugin"
}
plugins {
    id "playground"
}

rootProject.name = "core-playground"

playground {
    setupPlayground("..")
    selectProjectsFromAndroidX({ name ->
        if (name == ":core:uwb:uwb") return false
        if (name.startsWith(":core")) return true
        if (name == ":internal-testutils-mockito") return true
        if (name == ":internal-testutils-runtime") return true
        if (name == ":internal-testutils-truth") return true
        if (name == ":annotation:annotation-sampled") return true
        if (name == ":test:screenshot:screenshot") return true
        return false
    })
}
