buildscript {
    repositories {
        mavenCentral()
        maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
    }
	dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
        classpath 'org.ajoberstar:grgit:1.7.0'
    }
    configurations.all {
        resolutionStrategy {
            force 'org.ow2.asm:asm:6.0_BETA'
        }
    }
}

task setupCIWorkspace {
    // do nothing, stub method
}

apply plugin: 'java'
clean { delete "target" }

group = 'com.boydti.fawe'

def revision = ""
def buildNumber = ""
def semver = ""
def date = ""
ext {
    try {
        git = org.ajoberstar.grgit.Grgit.open(file(".git"))
        date = git.head().date.format("yy.MM.dd")
        revision = "-${git.head().abbreviatedId}"
        parents = git.head().parentIds;
        index = -96;  // Offset to match CI
        int major, minor, patch;
        major = minor = patch = 0;
        for (; parents != null && !parents.isEmpty(); index++) {
            int majorCount, minorCount, patchCount;
            patchCount = minor == 0 && major == 0 ? 1 : 0;
            commit = git.getResolve().toCommit(parents.get(0));
            for (String line : commit.fullMessage.tokenize("\n")) {
                switch (line.replaceAll("- ", "").split(" ")[0].toLowerCase()) {
                    case "minor":
                    case "added":
                    case "add":
                    case "change":
                    case "changed":
                    case "changes":
                        if (major == 0) {
                            minorCount = 1; patchCount = 0;
                        }
                        break;
                    case "refactor":
                    case "remove":
                    case "major":
                        patchCount = minorCount = 0;
                        majorCount = 1;
                        break;
                }
            }
            major += majorCount;
            minor += minorCount;
            patch += patchCount;
            parents = commit.getParentIds()
        }
        buildNumber = "-${index}"
        semver = "-${major}.${minor}.${patch}"
    } catch (Throwable ignore) {
        revision = "unknown";
    }
}

version = date + revision + buildNumber + semver
if ( project.hasProperty("lzNoVersion") ) { // gradle build -PlzNoVersion
    version = "unknown";
}
description = """FastAsyncWorldEdit"""

subprojects {

    apply plugin: 'java'
    apply plugin: 'maven'
    apply plugin: 'eclipse'
    apply plugin: 'idea'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    compileJava {
        options.compilerArgs += ["-parameters"]
    }

    repositories {
        mavenCentral()
        maven {url "http://repo.dmulloy2.net/content/groups/public/"}
        maven {url "https://repo.destroystokyo.com/repository/maven-public//"}
        maven { url = "https://mvnrepository.com/artifact/"}
        maven {url "http://ci.emc.gs/nexus/content/groups/aikar/" }
        maven {url "http://ci.mengcraft.com:8080/plugin/repository/everything"}
        maven {url "http://ci.athion.net/job/PlotSquared/ws/mvn/"}
        maven {url "http://empcraft.com/maven2"}
        maven {url "https://hub.spigotmc.org/nexus/content/groups/public/"}
        maven {url "http://maven.sk89q.com/repo/"}
        maven {url "http://nexus.hc.to/content/repositories/pub_releases"}
        maven {url "http://repo.maven.apache.org/maven2"}
        maven {url "http://ci.frostcast.net/plugin/repository/everything"}
        maven {url "http://maven.sk89q.com/artifactory/repo"}
        maven {url "http://repo.spongepowered.org/maven"}
        maven {url "https://repo.inventivetalent.org/content/groups/public/"}
    }
}
