import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    coroutinesVersion = '1.5.2'
    coreVersion = '1.6.0'
    appcompatVersion = '1.3.1'
    activityVersion = '1.3.1'
    lifecycleVersion = '2.3.1'
    composeVersion = '1.0.3'
    kotlinVersion = '1.5.30'
    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.4'
    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.18.0'
    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.5.30'
  }
}

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
}
