import org.ajoberstar.grgit.Grgit

buildscript {
  ext.kotlinVersion = '1.3.31'

  repositories {
    jcenter()
    google()
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath 'com.android.tools.build:gradle:3.2.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlinVersion"
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.6"
  }
}

allprojects {
  repositories {
    google()
    jcenter()
    maven {
      url "https://jitpack.io"
    }
    maven {
      url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    flatDir {
      dirs 'libs'
    }
  }
}

ext {
  git = Grgit.open()
  gitSha = git.head().id
  gitBranch = git.branch.getCurrent().name
}

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