buildscript {
    repositories {
        mavenCentral()
        maven { url "http://files.minecraftforge.net/maven" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
        classpath 'org.ajoberstar:gradle-git:0.10.1'
    }
}

plugins {
    id 'com.matthewprenger.cursegradle' version '1.0.1'
    id "net.minecraftforge.gradle.forge" version "2.0.2"
    id 'net.franz-becker.gradle-lombok' version '1.5'
}

apply plugin: 'maven-publish'

def build_number = 'CUSTOM'

if (System.getenv('BUILD_NUMBER') != null)
    build_number = System.getenv('BUILD_NUMBER')

group = package_group
archivesBaseName = mod_name
version = "${mc_version}-${mod_version}-${build_number}"

// Ignore this error. It'll work just fine when building.
import org.ajoberstar.grgit.*

ext.repo = Grgit.open(project.file('.'))
def gitHash = 'unknown'

if (new File(projectDir, '.git').exists())
    gitHash = repo.log().find().abbreviatedId

repositories {
    maven { url "http://dvs1.progwml6.com/files/maven" }
}

dependencies {
    deobfCompile "mezz.jei:jei_1.8.8:2.0.5.6"
}

minecraft {
    version = "${mc_version}-${forge_version}"
    runDir = "run"

    replace "@VERSION@", project.version
    replaceIn "BloodMagic.java"
    replaceIn "BloodMagicAPI.java"

    if (project.hasProperty('mappings_version'))
        mappings = project.mappings_version
}

processResources {
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    from(sourceSets.main.resources.srcDirs) {
        include '**/*.info'
        include '**/*.properties'

        expand 'version': project.version, 'mcversion': project.minecraft.version
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude '**/*.info'
        exclude '**/*.properties'
    }
}

jar {
    classifier = ''
    manifest.mainAttributes(
        "Built-By": System.getProperty('user.name'),
        "Created-By": "${System.getProperty('java.vm.version')} + (${System.getProperty('java.vm.vendor')})",
        "Implementation-Title": project.name,
        "Implementation-Version": project.version,
        "Git-Hash": gitHash
    )
}

lombok {
    version = "1.16.6"
    sha256 = "e0a471be03e1e6b02bf019480cec7a3ac9801702bf7bf62f15d077ad4df8dd5d"
}

// Ignore this one, too
import net.franz_becker.gradle.lombok.task.DelombokTask

task delombok(type: DelombokTask) {
    args("src/main/java", "-d", "build/sources/delomboked/java")
}

tasks.eclipse.dependsOn installLombok

// Javadoc jar
task javadocJar(type: Jar, dependsOn: javadoc) {
    from javadoc.destinationDir
    classifier = 'javadoc'
}

// Deobfuscated jar
task deobfJar(type: Jar) {
    from sourceSets.main.output
    classifier = 'deobf'
}

javadoc {
    source = projectDir.path + "/build/sources/delomboked/java"
}

tasks.javadoc.dependsOn delombok
tasks.build.dependsOn sourceJar, javadocJar

tasks.withType(JavaCompile) { task ->
    task.options.encoding = 'UTF-8'
}

publishing {
    tasks.publish.dependsOn 'build'
    publications {
        mavenJava(MavenPublication) {
            artifact jar
            artifact sourceJar
            artifact javadocJar
        }
    }
    repositories {
        if (project.hasProperty('maven_repo')) {
            maven { url maven_repo }
        } else {
            mavenLocal()
        }
    }
}

curseforge {
    if (project.hasProperty('curse_key'))
        apiKey = project.curse_key

    project {
        id = "${curse_id}"
        changelog = project.hasProperty('changelog') ? project.changelog : ''
        releaseType = 'alpha'

        addArtifact sourceJar
        addArtifact javadocJar
    }
}