import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    coroutinesVersion = '1.5.1'
    coreVersion = '1.6.0'
    appcompatVersion = '1.3.1'
    activityVersion = '1.3.1'
    lifecycleVersion = '2.3.1'
    composeVersion = '1.0.2'
    kotlinVersion = '1.5.21'
    daggerVersion = '2.38.1'
    awsVersion = '2.8.3'
    mockitoVersion = '3.12.4'
    robolectricVersion = '4.6.1'
    retrofitVersion = '2.9.0'
    materialVersion = '1.4.0'
    epoxyVersion = '4.6.3'
    junitVersion = '4.13.2'
    extJunitVersion = '1.1.3'
    espressoVersion = '3.3.0'
  }

  repositories {
    google()
    gradlePluginPortal()
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:2.3.0'
    classpath 'com.android.tools.build:gradle:7.0.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath "net.ltgt.gradle:gradle-errorprone-plugin:2.0.2"
    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.17.0'
    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.5.0'
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
    maven { url "https://jitpack.io" }
  }
}

ext {
  git = Grgit.open(currentDir: project.rootDir)
  gitSha = git.head().id
  gitBranch = git.branch.current().name
}

task clean(type: Delete) {
  delete rootProject.buildDir
}
