diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseExtension.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseExtension.groovy index 5abdbf2..ccf253c 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseExtension.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseExtension.groovy @@ -9,7 +9,17 @@ class CurseExtension { final Collection curseProjects = new ArrayList<>() - boolean debug = false + Options curseGradleOptions = new Options() + + @Deprecated + boolean getDebug() { + return curseGradleOptions.debug + } + + @Deprecated + void setDebug(boolean debug) { + curseGradleOptions.debug = debug + } /** * Define a new CurseForge project for deployment @@ -24,4 +34,8 @@ class CurseExtension { } curseProjects.add(curseProject) } + + void options(Closure configClosure) { + curseGradleOptions.with(configClosure) + } } diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy index c936985..91a7109 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy @@ -49,8 +49,18 @@ class CurseGradlePlugin implements Plugin { uploadTask.apiKey = curseProject.apiKey uploadTask.projectId = curseProject.id - Integration.checkJava(project, curseProject) - Integration.checkForgeGradle(project, curseProject) + CurseExtension ext = project.extensions.getByType(CurseExtension) + + if (ext.curseGradleOptions.javaVersionAutoDetect) { + Integration.checkJavaVersion(project, curseProject) + } + + if (ext.curseGradleOptions.javaIntegration) { + Integration.checkJava(project, curseProject) + } + if (ext.curseGradleOptions.forgeGradleIntegration) { + Integration.checkForgeGradle(project, curseProject) + } curseProject.copyConfig() diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy index 3f8aaee..a19ed63 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy @@ -54,7 +54,7 @@ class CurseUploadTask extends DefaultTask { int uploadFile(String json, File file) throws IOException, URISyntaxException { - if (project.extensions.getByName(CurseGradlePlugin.EXTENSION_NAME).debug) { + if (project.extensions.getByType(CurseExtension).curseGradleOptions.debug) { logger.lifecycle("DEBUG: File: $file Json: $json") return 0 } diff --git a/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy b/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy index d540c7f..29f7384 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy @@ -24,24 +24,32 @@ class Integration { curseProject.uploadTask.dependsOn jarTask } - JavaPluginConvention javaConv = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); - JavaVersion javaVersion = JavaVersion.toVersion(javaConv.targetCompatibility) - - if (JavaVersion.VERSION_1_6.compareTo(javaVersion) >= 0) { - curseProject.addGameVersion('Java 6') - } - if (JavaVersion.VERSION_1_7.compareTo(javaVersion) >= 0) { - curseProject.addGameVersion('Java 7') - } - if (JavaVersion.VERSION_1_8.compareTo(javaVersion) >= 0) { - curseProject.addGameVersion('Java 8') - } } } catch (Throwable t) { log.warn("Failed Java integration", t) } } + static void checkJavaVersion(Project project, CurseProject curseProject) { + + try { + JavaPluginConvention javaConv = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); + JavaVersion javaVersion = JavaVersion.toVersion(javaConv.targetCompatibility) + + if (JavaVersion.VERSION_1_6.compareTo(javaVersion) >= 0) { + curseProject.addGameVersion('Java 6') + } + if (JavaVersion.VERSION_1_7.compareTo(javaVersion) >= 0) { + curseProject.addGameVersion('Java 7') + } + if (JavaVersion.VERSION_1_8.compareTo(javaVersion) >= 0) { + curseProject.addGameVersion('Java 8') + } + } catch (Throwable t) { + log.warn("Failed to check Java Version", t) + } + } + static void checkForgeGradle(Project project, CurseProject curseProject) { try { if (project.hasProperty('minecraft')) { diff --git a/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy b/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy new file mode 100644 index 0000000..ecc325a --- /dev/null +++ b/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy @@ -0,0 +1,29 @@ +package com.matthewprenger.cursegradle + +/** + * Various options for CurseGradle. These affect the entire plugin and not just a single curse project. + */ +class Options { + + /** + * Debug mode will stop just short of actually uploading the file to Curse, and instead spit out the JSON + * to the console. Useful for testing your buildscript. + */ + boolean debug = false + + /** + * If this is left enabled, CurseGradle will automatically detect the compatible versions of Java for the project + * and add them to the CurseForge metadata. + */ + boolean javaVersionAutoDetect = true + + /** + * Enable integration with the Gradle Java plugin. This includes setting the default artifact to the jar task. + */ + boolean javaIntegration = true + + /** + * Enable integration with the ForgeGradle plugin. This includes setting dependencies on the reobfuscation tasks. + */ + boolean forgeGradleIntegration = true +}