/*
 * This file is part of Applied Energistics 2.
 * Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved.
 *
 * Applied Energistics 2 is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Applied Energistics 2 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Applied Energistics 2.  If not, see <http://www.gnu.org/licenses/lgpl>.
 */

buildscript {
    repositories {
        mavenLocal()
        jcenter()
        mavenCentral()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
    }
}

plugins {
  id "org.sonarqube" version "2.6"
}

apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'jacoco'

repositories {
    mavenLocal()
    jcenter()
    mavenCentral()
}

apply from: 'gradle/scripts/dependencies.gradle'
apply from: 'gradle/scripts/artifacts.gradle'
apply from: 'gradle/scripts/optional.gradle'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

// ensure everything uses UTF-8 and not some random codepage chosen by gradle
compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

version = aeversion + "-" + aechannel + "-" + aebuild + " " + trousers
group = aegroup
archivesBaseName = aebasename

// Add Coremod Manifest
jar {
    manifest {
        attributes 'FMLAT': 'appeng_at.cfg'
    }

    from sourceSets.api.output
    dependsOn apiClasses

    // specify which files are really included, can control which APIs should be in
    include "appeng/**"
    include "assets/**"
    include "mcmod.info"
    include "pack.mcmeta"
    include "META-INF/appeng_at.cfg"
}

minecraft {
    version = minecraft_version + "-" + forge_version

    replaceIn "AEConfig.java"
    replaceIn "package-info.java"

    replace "@version@", project.version
    replace "@aeversion@", aeversion
    replace "@aechannel@", aechannel
    replace "@aebuild@", aebuild

    // used when launching minecraft in dev env
    runDir = "run"
    mappings = mcp_mappings
}

sourceSets {
    api
    main
}

processResources
{
    // 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 'mcmod.info'
        expand 'version': project.version, 'mcversion': project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }

    // move access transformer to META-INF
    rename '(.+_at.cfg)', 'META-INF/$1'
}
