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

apply plugin: 'forge'
apply plugin: 'scala'
apply plugin: 'maven'
apply plugin: 'maven-publish'

ext.buildProps = file "build.properties"
 
buildProps.withReader {
    def prop = new Properties()
    prop.load(it)
    ext.config = new ConfigSlurper().parse prop
}
 
group = "resonantinduction"
archivesBaseName = "${System.getenv().JOB_NAME}"
 
minecraft {
    version = "${rootProject.config.version.minecraft}-${rootProject.config.version.forge}"
    
    replaceIn "Reference.java"
    replace "@MAJOR@", rootProject.config.version.mod.major
    replace "@MINOR@", rootProject.config.version.mod.minor
    replace "@REVIS@", rootProject.config.version.mod.revis
    replace "@BUILD@", "${System.getenv().BUILD_NUMBER}"
}

subprojects*.apply plugin: 'java'
subprojects*.apply plugin: 'scala'

allprojects {
    version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}"
    
    if (System.getenv("BUILD_NUMBER") != null)
        version += ".${System.getenv("BUILD_NUMBER")}"
        
	repositories {
        maven {
            name 'Calclavia Maven'
            url 'http://calclavia.com/maven'
        }
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
		ivy {
			name 'FMP'
			artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
		}
		ivy {
			artifactPattern "http://www.chickenbones.craftsaddle.org/Files/New_Versions/1.6.4/[module]-dev%20[revision].[ext]"
		}
        mavenCentral()
    }
    
    dependencies {
        compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev"
		compile group: 'resonant-engine-development', name: 'resonant-engine', version: "${config.version.resonantengine}", classifier: "dev"

		compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
		compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
		compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar'
		compile name: 'CodeChickenCore', version: "${config.version.cccore}", ext: 'jar'
	}
    
    jar {
		classifier = project.name
        dependsOn ":copyBuildXml"
        destinationDir = file (rootProject.getRootDir().getPath() + '/output')
    }
	
	publishing {
		publications {
			mavenJava(MavenPublication) {
				artifact jar
			}
		}
		repositories {
			maven {
				url "file://var/www/maven"
			}
		}
	}
}
 
subprojects {
    archivesBaseName = "${System.getenv().JOB_NAME}"    
	sourceSets.main.compileClasspath += rootProject.sourceSets.api.output
    dependencies {
        compile rootProject
    }
    
    rootProject.tasks.reobf {
        reobf(tasks.jar) { spec ->
            spec.classpath = sourceSets.main.compileClasspath
        }
    }
}

processResources {
	from 'build.properties'
}
 
task copyBuildXml(type: Copy) {
    from 'build.properties'
    into 'output'
}
 
task apiZip(type: Zip) {
    classifier = 'api'
    from sourceSets*.allSource
    include 'resonantinduction/api/**'
    destinationDir = file 'output'
}
	
artifacts {
    archives apiZip
}

import net.minecraftforge.gradle.tasks.dev.ChangelogTask
import net.minecraftforge.gradle.common.Constants
import net.minecraftforge.gradle.delayed.*

task createChangelog(type: ChangelogTask) {
    def jobName = "${System.getenv().JOB_NAME}"
    def buildNumber = "${System.getenv().BUILD_NUMBER}"
    
    setServerRoot(new DelayedString(project, 'http://ci.calclavia.com/'))
    setJobName(new DelayedString(project, jobName.toString()));
    setAuthName(new DelayedString(project, 'console_script'));
    setAuthPassword(new DelayedString(project, '625d2ac53190be3422faa0c474fb299b'));
    setTargetBuild({buildNumber.toString()});
    setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt'));
}

build.dependsOn "apiZip", "copyBuildXml", "createChangelog"
