import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    composeVersion = '1.0.0-alpha11'
    kotlinVersion = '1.4.21-2'
    daggerVersion = '2.30.1'
  }

  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-alpha05'
    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
}
