if (!hasProperty('mainClass')) {
    ext.mainClass = ''
}

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
            srcDir 'src/plugins/java'
            srcDir 'src/tools/java'
        }
    }
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.ajoberstar:gradle-git:1.0.0-rc.1'
    }
}

import java.text.SimpleDateFormat
import org.ajoberstar.grgit.*

task updateVersion << {
    
    def verfile = file('src/main/java/com/jme3/system/JmeVersion.java')
    def jmeGitHash
    def jmeShortGitHash
    def jmeBuildDate
    def jmeBranchName
    
    try {
        def grgit = Grgit.open(project.file('.').parent)
        jmeGitHash = grgit.head().id
        jmeShortGitHash = grgit.head().abbreviatedId
        jmeBuildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
        jmeBranchName = grgit.branch.current.name
    } catch (ex) {
        // Failed to get repo info
        logger.warn("Failed to get repository info: " + ex.message + ". " + \
                    "Only partial build info will be generated.")
        
        jmeGitHash = ""
        jmeShortGitHash = ""
        jmeBuildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
        jmeBranchName = "unknown"
    }
    
    verfile.text = "\npackage com.jme3.system;\n\n" +
                   "/**\n * THIS IS AN AUTO-GENERATED FILE..\n * DO NOT MODIFY!\n */\n" + 
                   "public class JmeVersion {\n" + 
                   "    public static final String BUILD_DATE = \"${jmeBuildDate}\";\n" + 
                   "    public static final String BRANCH_NAME = \"${jmeBranchName}\";\n" + 
                   "    public static final String GIT_HASH = \"${jmeGitHash}\";\n" + 
                   "    public static final String GIT_SHORT_HASH = \"${jmeShortGitHash}\";\n" + 
                   "    public static final String FULL_NAME = \"jMonkeyEngine ${jmeVersion} (${jmeVersionTag})\";\n" + 
                   "}\n"
}

compileJava.dependsOn(updateVersion)

dependencies {
}