import org.ajoberstar.grgit.Grgit

buildscript {
  ext.kotlinVersion = '1.2.51'
  ext.supportLibVersion = '27.1.1'

  repositories {
    jcenter()
    google()
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath 'com.android.tools.build:gradle:3.1.3'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlinVersion"
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.4.0'
  }
}

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

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

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