Skip to content

Commit

Permalink
Switch to the h3nt gradle plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
hea3ven committed Jan 17, 2017
1 parent b83e090 commit 33e5c54
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 131 deletions.
27 changes: 27 additions & 0 deletions build.gradle
@@ -1,6 +1,12 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
maven {
name = "Hea3veN"
url = "https://raw.github.com/hea3ven/mvn-repo/master"
}
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
Expand All @@ -11,6 +17,9 @@ buildscript {
}
}
dependencies {
classpath 'com.hea3ven.tools.gradle.bootstrap:h3nt-gradle-bootstrap:1.0.0'
classpath 'com.hea3ven.tools.gradle.automc:h3nt-gradle-automc:1.0.0'
classpath 'com.hea3ven.tools.gradle.grlog:h3nt-gradle-grlog:1.0.0'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
classpath 'com.matthewprenger:CurseGradle:1.0-SNAPSHOT'
classpath 'org.ajoberstar:grgit:1.4.1'
Expand All @@ -22,12 +31,19 @@ plugins {
}

apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'com.hea3ven.tools.gradle.bootstrap'
apply plugin: 'com.hea3ven.tools.gradle.automc'
apply plugin: 'com.hea3ven.tools.gradle.grlog'
apply plugin: 'com.matthewprenger.cursegradle'
apply from: 'mcbuild.gradle'

import groovy.io.FileType

repositories {
maven {
name = "Hea3veN"
url = "https://raw.github.com/hea3ven/mvn-repo/master"
}
maven {
url "http://dvs1.progwml6.com/files/maven"
}
Expand All @@ -49,6 +65,17 @@ dependencies {
testCompile "junit:junit:4.12"
}

bootstrap {
file 'assets/BuildingBricks/bootstrap.json'
}

// changelog {
// plainTextChangelog {
// file "CHANGELOG"
// lineFormat " %s."
// }
// }

task updateCommonCode << {
updateCommonCodeFrom("base/BlockBuildingBricksBase.java", "COMMON BLOCK CODE")
updateCommonCodeFrom("BlockMaterialBlock.java", "COMMON TILE CODE")
Expand Down
16 changes: 8 additions & 8 deletions gradle.properties
Expand Up @@ -2,26 +2,26 @@ project_group=com.hea3ven.buildingbricks
project_name=BuildingBricks
project_display_name=Building Bricks
project_version=2.0.13
project_class=com.hea3ven.buildingbricks.core.ModBuildingBricks
# project_class=com.hea3ven.buildingbricks.core.ModBuildingBricks
project_repo=hea3ven/BuildingBricks
project_repo_branch=master
project_curseforge_id=236150
project_curseforge_name_id=building-bricks
project_curseforge_type=release
project_update_file=media/update.json
project_changelog_file=CHANGELOG
project_bootstrap_file=assets/buildingbricks/bootstrap.json
project_coremod=com.hea3ven.buildingbricks.core.load.LoadingPluginBuildingBricks
# project_bootstrap_file=assets/buildingbricks/bootstrap.json
# project_coremod=com.hea3ven.buildingbricks.core.load.LoadingPluginBuildingBricks

version_mc=1.10.2
version_forge=12.18.1.2011
version_forge=12.18.3.2209
#version_forge_branch=1.10.0
version_mappings=snapshot_20160716

version_h3nt_mappings=1.1.1
version_h3nt_mappings_pattern=1.1.x
version_asmtweaks=1.1.1
version_asmtweaks_pattern=1.1.x
version_h3nt_mappings=1.2.0
version_h3nt_mappings_pattern=1.2.x
version_asmtweaks=1.2.0
version_asmtweaks_pattern=1.2.x
version_commonutils=1.9.4-2.2.2
version_commonutils_pattern=1.9.4-2.2.x
version_jei=3.6.7.216
149 changes: 29 additions & 120 deletions mcbuild.gradle
@@ -1,6 +1,4 @@
// Hea3veN's build script for minecraft mods
// v1.0.9 (2016-07-25):
// * Disable the up-to-date check of processResources
// v1.0.9 (2016-06-24):
// * Improve the sorting
// v1.0.8 (2016-06-12):
Expand Down Expand Up @@ -34,41 +32,13 @@ buildscript {
}
}

apply plugin: McBuildPlugin

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
import org.ajoberstar.grgit.Grgit
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.HttpClientBuilder

version = "${version_mc}-${project_version}"
group = "${project_group}"
archivesBaseName = "${project_name}"

sourceCompatibility = 1.8
targetCompatibility = 1.8

minecraft {
version = "${version_mc}-${version_forge}" + (project.hasProperty('version_forge_branch')? '-' + version_forge_branch : '')
mappings = version_mappings
runDir = 'run'

if (project.hasProperty('project_coremod')) {
coreMod = project_coremod
}

def project_class_path = project_class.replace('.', '/')
replaceIn "src/main/java/${project_class_path}.java"
replace 'PROJECTVERSION', project.version
replace 'MCVERSION', project.minecraft.version
replace 'FORGEVERSION', version_forge
}

if (project.hasProperty('project_coremod')) {
jar.manifest.attributes.put('FMLCorePluginContainsFMLMod', 'true')
}

if (project.hasProperty('project_curseforge_id')) {
curseforge {
Expand All @@ -85,80 +55,22 @@ if (project.hasProperty('project_curseforge_id')) {
}
}

repositories {
mavenLocal()
maven {
url "https://raw.github.com/hea3ven/mvn-repo/master"
}
// maven {
// name "JEI"
// url "http://dvs1.progwml6.com/files/maven"
// }
}

configurations {
runmods
}

dependencies {
// deobfCompile "mezz.jei:jei_1.8.9:2.24.0.109"
}

processResources {
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
include project_bootstrap_file
include 'src/main/resources/buildingbricks/bootstrap.java'
expand project.properties
expand 'version': project.version, 'mcversion': project.minecraft.version
}

from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
exclude project_bootstrap_file
exclude 'src/main/resources/buildingbricks/bootstrap.java'
}

outputs.upToDateWhen { false }
}

class McBuildPlugin implements Plugin<Project> {
void apply(Project project) {
project.configurations.create('release')
project.configurations.release.transitive = false
}
}

if (project.hasProperty('project_bootstrap_file')) {

sourceSets.main.java.srcDirs += 'src/bootstrap/java'

jar {
manifest {
attributes("H3NTBootstrap": project_bootstrap_file)
}
into('libs') {
from configurations.release
}
}
}

task copyRunMods(type: Copy) {
from configurations.runmods.files
into minecraft.runDir + "/mods/"
}
setupDecompWorkspace.dependsOn copyRunMods

if (tasks.findByPath('compileKotlin') != null) {
task updateMainKotlinFile << {
def mainFile = new File('src/main/java/' + project_class.replace('.', '/') + '.kt')
if (mainFile.exists()) {
def content = mainFile.text.
replaceAll(/val VERSION = "[^"]*"/, 'val VERSION = "' + project.version + '"').
replaceAll(/Forge@\[[^,]*,\)/, "Forge@[$version_forge,)")
mainFile.withWriter { w -> w << content }
}
}
compileKotlin.dependsOn updateMainKotlinFile
}

task updateChangelog << {
UpdateFile updateFile = UpdateFile.load(new File(projectDir, project_update_file))
Expand Down Expand Up @@ -227,28 +139,27 @@ class UpdateFile {
def save(File file) {
def data = [:]
data.put('homepage', homepage)
promotions = promotions.sort { lhs, rhs -> sortVersions(lhs.key, rhs.key) }
promotions = promotions.sort { k1, k2 -> compareVersions(k1.key, k2.key) }
data.put('promos', promotions)
versions = versions.sort { lhs, rhs -> sortVersions(lhs.key, rhs.key) }
versions = versions.sort { k1, k2 -> compareVersions(k1.key, k2.key) }
versions.each { mcVersion, v ->
data[mcVersion] = [:]
data[mcVersion]['commit'] = commits[mcVersion]
v.each { version, changelog ->
data[mcVersion][version] = changelog.save()
}
data[mcVersion] = data[mcVersion].sort { lhs, rhs -> sortVersions(lhs.key, rhs.key) }
data[mcVersion] = data[mcVersion].sort { k1, k2 -> compareVersions(k1.key, k2.key) }
}
data = data.sort { lhs, rhs -> sortVersions(lhs.key, rhs.key) }
data = data.sort { k1, k2 -> compareVersions(k1.key, k2.key) }
file.setText(new JsonBuilder(data).toPrettyString())
}

def saveChangelog(File file) {
def changelogText = ''
versions.sort { lhs, rhs -> sortVersions(lhs.key, rhs.key) }.collect { it.value }.reverseEach {
versions.sort { k1, k2 -> compareVersions(k1.key, k2.key) }.collect { it.value }.reverseEach {
def sortedChangelogs = [:]
it.sort {
lhs, rhs -> sortVersions(lhs.key + ((!lhs.key.contains('-beta') && !lhs.key.contains('-alpha')) ? '-release' : ''),
rhs.key + ((!rhs.key.contains('-beta') && !rhs.key.contains('-alpha')) ? '-release' : ''))
it.key + ((!it.key.contains('-beta') && !it.key.contains('-alpha')) ? '-release' : '')
}.reverseEach { sortedChangelogs[it.key] = it.value }
sortedChangelogs.each {
version, changelog -> changelogText += version + ':\n' + changelog.save() + '\n\n'
Expand All @@ -257,32 +168,30 @@ class UpdateFile {
file.setText(changelogText)
}

def sortVersions(String lhs, String rhs) {
def compareVersions(String v1, String v2) {
String[] parts1 = v1.split(/[.-]/)
String[] parts2 = v2.split(/[.-]/)
def i = 0

while (i < lhs.size() && i < rhs.size()) {
if (!lhs.charAt(i).isDigit() || !rhs.charAt(i).isDigit()) {
if (lhs.charAt(i) != rhs.charAt(i))
return lhs[i] <=> rhs[i]
i++
continue
}
def endL = i + 1
while (endL < lhs.size() && lhs.charAt(endL).isDigit())
endL++
def endR = i + 1
while (endR < rhs.size() && rhs.charAt(endR).isDigit())
endR++

def numL = lhs.substring(i, endL) as Integer
def numR = rhs.substring(i, endR) as Integer
if (numL == numR) {
i = endL
continue
while (parts1.length > i && parts2.length > i) {
if (parts1[i].isInteger() && parts2[i].isInteger()) {
def cmp = parts1[i] as int <=> parts2[i] as int
if (cmp != 0)
return cmp
} else {
if (i > 0 && parts1[i].isInteger())
return 1
else if (i > 0 && parts2[i].isInteger())
return -1
else
return parts1[i] <=> parts2[i]
}
return numL <=> numR
i++
}
return lhs <=> rhs
if (parts1.length > parts2.length)
return 1
if (parts1.length < parts2.length)
return -1
return 0
}
}

Expand Down
Expand Up @@ -32,8 +32,8 @@
public class ModBuildingBricks {

public static final String MODID = "buildingbricks";
public static final String VERSION = "PROJECTVERSION";
public static final String DEPENDENCIES = "required-after:Forge@[FORGEVERSION,);after:Quark;after:BiomesOPlenty;after:adobeblocks";
public static final String VERSION = "@PROJECTVERSION@";
public static final String DEPENDENCIES = "after:Quark;after:BiomesOPlenty;after:adobeblocks";

public static final Logger logger = LogManager.getLogger("BuildingBricks");

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/mcmod.info
Expand Up @@ -3,7 +3,7 @@
"modid": "buildingbricks",
"name": "Building Bricks",
"description": "A mod about building blocks and building tools.",
"version": "${version}",
"version": "${project_version}",
"mcversion": "${version_mc}",
"url": "https://github.com/hea3ven/BuildingBricks",
"updateUrl": "",
Expand Down

0 comments on commit 33e5c54

Please sign in to comment.