// define the properties file
ext.configFile = file "gradle.properties"
configFile.withReader {
    // read config.  it shall from now on be referenced as simply config or as project.config
    def prop = new Properties()
    prop.load(it)
    project.ext.config = new ConfigSlurper().parse prop
}

// For those who want the bleeding edge
buildscript {
    repositories {
        jcenter()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
    }
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'maven'

///////////////////////////////////////////////////
// IDE Settings
///////////////////////////////////////////////////
idea {
    project {
        languageLevel = '1.8'
    }
}

///////////////////////////////////////////////////
// ForgeGradle
///////////////////////////////////////////////////
version = (hasProperty("CIRevision") ? CIRevision : config.mod_version)
group = config.group_name
archivesBaseName = "${config.mod_id}-${config.minecraft_version}"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

minecraft {
    version = config.minecraft_version + "-" + config.forge_version // grab latest forge
    runDir = "run"

    mappings = config.mcp_mappings
    makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace '@mod_version@', version
    replace '@mod_id@', config.mod_id
    replace '@ci_build@', hasProperty("CIRevision") ? 'true' : 'false'

    replaceIn 'TwilightForestMod.java'
    replace '@VERSION@', project.version
}

processResources {
    //replaceIn 'assets/twilightforest/patchouli_books/guide/book.json'
    //replace '@EDITION@', project.version

    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include '**/*.info'
        //include '**/*.properties'
        include 'assets/twilightforest/patchouli_books/guide/book.json'

        // replace version and mcversion
        expand ([
                'version':project.version,
                'mcversion':project.minecraft.version,
                'forge_version': config.forge_version,
                'mod_version': config.mod_version,
                'minecraft_version': config.minecraft_version,
                'edition': (project.version - (config.mod_version + '.')),
                's': '$'
        ])
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
        exclude 'assets/twilightforest/patchouli_books/guide/book.json'
    }
}

compileJava {
    options.encoding = 'UTF-8'
}

jar {
    classifier = 'universal'
    manifest {
        attributes 'FMLAT': 'tf_at.cfg'
    }
}

repositories {
    maven {
        name 'progwm\'s Maven' // JEI + Mantle + TCon
        url 'https://dvs1.progwml6.com/files/maven'
    }
    maven {
        name 'tterrag\'s Maven' // CTM
        url 'https://maven.tterrag.com/'
    }
    maven {
        name 'Jared\'s Maven' // Immersive Engineering + Patchouli
        url 'https://blamejared.com/maven'
    }
    maven {
        name 'player\'s Maven' // Forestry
        url 'http://maven.ic2.player.to/'
    }
    maven {
        name 'Curseforge Maven' // Baubles + Thaumcraft
        url 'https://minecraft.curseforge.com/api/maven/'
    }
}

dependencies {
    // progwml6
    deobfCompile "mezz.jei:jei_${minecraft_version}:${jei_version}"

    deobfCompile "slimeknights.mantle:Mantle:${minecraft_sub_version}-${mantle_version}"
    deobfCompile "slimeknights:TConstruct:${minecraft_version}-${tcon_version}"

    // tterrag
    deobfCompile "team.chisel.ctm:CTM:MC${minecraft_version}-${ctm_version}"
    //deobfCompile "team.chisel:Chisel:MC${minecraft_version}-${chisel_version}"

    // blamejared
    deobfCompile "blusunrize:ImmersiveEngineering:${immersive_engineering_version}"
    deobfCompile "vazkii.patchouli:Patchouli:${patchouli_version}"

    // player
    deobfCompile "net.sengir.forestry:forestry_${minecraft_version}:${forestry_version}"

    // curseforge
    deobfCompile "baubles:Baubles:${minecraft_sub_version}:${baubles_version}"
    deobfCompile "thaumcraft:Thaumcraft:${minecraft_version}:${thaumcraft_version}"
}

task createPom {
    doLast {
        pom {
            project {
                groupId project.group
                artifactId project.archivesBaseName
                version project.version

                inceptionYear '2012'
                licenses {
                    license {
                        name 'LGPL 2.1'
                        url 'https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html'
                        distribution 'repo'
                    }
                }
            }
        }.writeTo(libsDir.path + "/" + project.archivesBaseName + "-" + project.version + ".pom")
    }
}

build.dependsOn createPom
