import org.ajoberstar.grgit.Grgit

buildscript {
  ext {
    composeVersion = '1.0.0-rc01'
    kotlinVersion = '1.5.10'
    daggerVersion = '2.37'
  }

  repositories {
    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-beta05'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath 'org.ajoberstar:grgit:1.9.3'
    classpath "net.ltgt.gradle:gradle-errorprone-plugin:2.0.1"
    classpath 'com.vanniktech:gradle-maven-publish-plugin:0.14.2'
    classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.4.30'
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
    maven {
      url "https://jitpack.io"
    }
    maven {
      url "https://kotlin.bintray.com/kotlinx"
    }
    maven {
      url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
  }
}

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

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