def useRemoteBuildCache = System.getenv('USE_ANDROIDX_REMOTE_BUILD_CACHE') == 'true'

if (useRemoteBuildCache) {
    logger.warn('Using AndroidX remote build cache')
    gradle.settingsEvaluated { settings ->
        settings.buildCache {
            remote(HttpBuildCache) {
                def osName = System.getProperty("os.name").toLowerCase()
                switch (osName) {
                    case { it.contains("mac os x") }:
                    case { it.contains("darwin") }:
                    case { it.contains("osx") }:
                        url = 'http://gradle-remote-cache.uplink2.goog:999/cache/'
                        break
                    default:
                        url = 'http://gradle-remote-cache.uplink.goog:999/cache/'
                        break
                }
                allowInsecureProtocol = true
                push = true
            }
        }
    }
}
