/*
 * Copyright 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

def build_versions = [:]

build_versions.kotlin = '1.3.0'
build_versions.lint = '26.3.0-rc01'

rootProject.ext['build_versions'] = build_versions


def build_libs = [:]

def androidPluginVersionOverride = System.getenv("GRADLE_PLUGIN_VERSION")

if (androidPluginVersionOverride != null) {
    build_libs.gradle = 'com.android.tools.build:gradle:' + androidPluginVersionOverride
    logger.warn("USING OVERRIDDEN ANDROID GRADLE PLUGIN DEPENDENCY OF " + build_libs.gradle)
} else {
    // Keep gradle plugin version in sync with ub_supportlib-master manifest.
    build_libs.gradle = 'com.android.tools.build:gradle:3.3.0-rc01'
}

build_libs.lint = [
        core: "com.android.tools.lint:lint:${build_versions.lint}",
        api: "com.android.tools.lint:lint-api:${build_versions.lint}",
        tests: "com.android.tools.lint:lint-tests:${build_versions.lint}"
]

build_libs.error_prone_gradle = 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.13'
build_libs.kotlin = [
        stdlib: "org.jetbrains.kotlin:kotlin-stdlib:${build_versions.kotlin}",
        gradle_plugin: "org.jetbrains.kotlin:kotlin-gradle-plugin:${build_versions.kotlin}"
]
build_libs.dokka_gradle = 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18-SNAPSHOT'

rootProject.ext['build_libs'] = build_libs
