plugins {
    id "com.github.johnrengelman.shadow" version "7.1.2"
    id "me.shedaniel.unified-publishing"
}

architectury {
    platformSetupLoomIde()
    forge()
}

loom {
    accessWidenerPath = project(":common").loom.accessWidenerPath

    forge {
        convertAccessWideners = true
        extraAccessWideners.add loom.accessWidenerPath.get().asFile.name

        mixinConfig "antiqueatlas-common.mixins.json"
        mixinConfig "antiqueatlas.mixins.json"
    }
}


configurations {
    common
    shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
    compileClasspath.extendsFrom common
    runtimeClasspath.extendsFrom common
    developmentForge.extendsFrom common
}

dependencies {
    forge "net.minecraftforge:forge:${rootProject.forge_version}"

    modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}"
    modApi "me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_version}"

    common(project(path: ":common", configuration: "namedElements")) { transitive false }
    shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false }
}

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

    filesMatching("META-INF/mods.toml") {
        expand "version": project.version
    }
}

shadowJar {
    exclude "fabric.mod.json"
    exclude "architectury.common.json"

    configurations = [project.configurations.shadowCommon]
    classifier "dev-shadow"
}

remapJar {
    input.set shadowJar.archiveFile
    dependsOn shadowJar
    classifier null
}

jar {
    classifier "dev"
}

sourcesJar {
    def commonSources = project(":common").sourcesJar
    dependsOn commonSources
    from commonSources.archiveFile.map { zipTree(it) }
}

components.java {
    withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
        skip()
    }
}

publishing {
    publications {
        mavenForge(MavenPublication) {
            artifactId = rootProject.archives_base_name + "-" + project.name
            from components.java
        }
    }

    // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
    repositories {
        // Add repositories to publish to here.
    }
}

unifiedPublishing {
    project {
        gameVersions = ["1.18.2"]
        gameLoaders = ["forge"]
        releaseType = "release"

        mainPublication tasks.remapJar

        relations {
            depends {
                curseforge = "cloth-config"
                modrinth = "cloth-config"
            }
            depends {
                curseforge = "architectury-api"
                modrinth = "architectury-api"
            }
        }

        var cfToken = System.getenv("CF_TOKEN")
        if (cfToken != null) {
            curseforge {
                token = cfToken
                id = rootProject.curseforge_id
                gameVersions.addAll "Java 17"
            }
        }

        var mrToken = System.getenv("MODRINTH_TOKEN")
        if (mrToken != null) {
            modrinth {
                token = mrToken
                id = rootProject.modrinth_id
            }
        }
    }
}