// Fabric build script
// 03/06/2019
// https://github.com/FabricMC/fabric-example-mod/blob/master/build.gradle

plugins {
    id 'fabric-loom' version '0.2.4-SNAPSHOT'
    id 'com.github.johnrengelman.plugin-shadow' version '2.0.3'
    id 'maven-publish'
}

targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_1_8

version = "${project.minecraft_version}-${project.version}"

if (project.release != 'RELEASE') {
    version += "-${project.release}"
}

group = project.group
description = project.displayname
archivesBaseName = project.name

minecraft {
    refmapName = 'minelp.mixin.refmap.json'
}

repositories {
    maven {
        name = 'minelp'
        url = 'http://repo.minelittlepony-mod.com/maven/snapshot'
    }
}

// check for updates every build when on CI
if (System.env.CI) {
    configurations.all {
        resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
    }
}

dependencies {
    minecraft "com.mojang:minecraft:${project.minecraft_version}"
    mappings "net.fabricmc:yarn:${project.yarn_mappings}"
    modCompile "net.fabricmc:fabric-loader:${project.loader_version}"
    compileOnly "com.google.code.findbugs:jsr305:3.0.2"

    modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

    modCompile "com.minelittlepony:Kirin:${project.kirin_version}"
//    include "com.minelittlepony:Kirin:${project.kirin_version}"

    // TODO: HD Skins can be made optional later
    modCompile "com.minelittlepony:HDSkins:${project.hd_skins_version}"
    include "com.minelittlepony:HDSkins:${project.hd_skins_version}"
}

processResources {
    inputs.property "version", project.version

    from(sourceSets.main.resources.srcDirs) {
        include "fabric.mod.json"
        expand "version": project.version
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude "fabric.mod.json"
    }
    from 'LICENSE'
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = "sources"
    from sourceSets.main.allSource
}

//
// Imports the Background Ponies from the MLP Community Skin Pack
//
task copyBGPones(type: Copy) {

    def illegals = /[^a-z0-9_\/.-]/

    from "skins/Background Ponies"
    into temporaryDir

    eachFile {
        if (it.name =~ illegals) {
            logger.warn("Sanitizing file with illegal characters: ${it.path}")
            it.name = it.name.replaceAll(/\s/, '_').replaceAll(illegals, '')
        }
    }
}

publishing {
    publications {
        maven(MavenPublication) {
            afterEvaluate {
                artifact(remapJar.output)
            }
            artifact(sourcesJar) {
                builtBy remapSourcesJar
            }

            pom {
                name = "MineLittlePony"
                description = "HD Skins support for Minecraft"
                url = "http://minelittlepony-mod.com"
                licenses {
                    license {
                        name = "MIT Public License"
                        url = "https://tlo.mit.edu/learn-about-intellectual-property/software-and-open-source-licensing"
                    }
                }
                developers {
                    developer {
                        id = "killjoy1221"
                        name = "Matthew Messinger"
                        email = "mattmess1221@gmail.com"
                    }
                    developer {
                        id = "sollace"
                    }
                }
                scm {
                    connection = 'scm:git:git://github.com/MineLittlePony/MineLittlePony.git'
                    developerConnection = 'scm:git:ssh://github.com/MineLittlePony/MineLittlePony.git'
                    url = 'https://github.com/MineLittlePony/MineLittlePony'
                }
            }
        }
    }

    repositories {
        maven {
            name = "MineLittlePony"
            def mvn = 's3://repo.minelittlepony-mod.com/maven'
            url = release == 'SNAPSHOT' ? "$mvn/snapshot" : "$mvn/release"

            credentials(AwsCredentials) {
                accessKey = System.env.ACCESS_KEY
                secretKey = System.env.SECRET_KEY
            }
        }
    }
}