import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    coroutinesVersion = '1.6.2'
    coreVersion = '1.6.0'
    appcompatVersion = '1.3.1'
    activityVersion = '1.3.1'
    lifecycleVersion = '2.3.1'
    composeVersion = '1.1.1'
    kotlinVersion = '1.6.10'
    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'
    startupVersion = '1.2.0-alpha01'
  }

  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    classpath 'org.ajoberstar.grgit:grgit-gradle:4.1.1'
    classpath 'com.android.tools.build:gradle:7.1.3'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.24.0'
    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.5.30'
  }
}

plugins {
  id 'net.ltgt.errorprone' version '3.0.1' apply false
}

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
}
