import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    composeVersion = '1.0.0-beta02'
    kotlinVersion = '1.4.31'
    daggerVersion = '2.32'
  }

  repositories {
    jcenter()
    google()
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath 'com.android.tools.build:gradle:7.0.0-alpha08'
    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"
    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.13.0'
    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.4.10.2'
  }
}

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(currentDir: project.rootDir)
  gitSha = git.head().id
  gitBranch = git.branch.getCurrent().name
}

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