Skip to content
This repository was archived by the owner on Apr 25, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ jobs:
with:
name: cursegradle-fat-jar
path: build/libs/CurseGradle*-all.jar
integration-test:
integration-test-mdk:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
java: [8, 11]
name: Integration Test - Java ${{ matrix.java }}
name: Integration Test MDK - Java ${{ matrix.java }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
Expand All @@ -39,3 +39,24 @@ jobs:
- run: test/mdk/gradlew build curseforge --stacktrace --no-daemon --console=plain --warning-mode all --project-dir test/mdk
env:
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
integration-test-bukkit:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
java: [8, 11]
name: Integration Test Bukkit - Java ${{ matrix.java }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- uses: actions/download-artifact@v1
with:
name: cursegradle-fat-jar
path: test/bukkit
- run: chmod +x test/bukkit/gradlew
- run: test/bukkit/gradlew --version --no-daemon
- run: test/bukkit/gradlew build curseforge --stacktrace --no-daemon --console=plain --warning-mode all --project-dir test/bukkit
env:
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
plugins {
id 'groovy'
id 'idea'
id 'com.gradle.plugin-publish' version '0.12.0'
id 'com.github.johnrengelman.shadow' version '6.0.0'
id 'com.gradle.plugin-publish' version '0.14.0'
id 'com.github.johnrengelman.shadow' version '6.1.0'
}

ext {
inceptionYear = '2015'
url = 'https://github.com/matthewprenger/CurseGradle'
}

version = '1.4.0'
version = '1.4.1'
group = 'com.matthewprenger'
description = 'Gradle plugin to upload artifacts to CurseForge'
archivesBaseName = 'CurseGradle'
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 2 additions & 3 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#Sun Jul 12 02:22:29 CDT 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ fi
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`

JAVACMD=`cygpath --unix "$JAVACMD"`

# We build the pattern for arguments to be converted via cygpath
Expand Down
21 changes: 3 additions & 18 deletions gradlew.bat
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
if "%ERRORLEVEL%" == "0" goto execute

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Expand All @@ -54,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init
if exist "%JAVA_EXE%" goto execute

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
Expand All @@ -64,29 +64,14 @@ echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,22 @@ class CurseGradlePlugin implements Plugin<Project> {
static final Set<String> VALID_RELEASE_TYPES = ['alpha', 'beta', 'release']
static final Set<String> VALID_RELATIONS = ['requiredDependency', 'embeddedLibrary', 'optionalDependency', 'tool', 'incompatible']

static final String API_BASE_URL = 'https://minecraft.curseforge.com'
static final String VERSION_TYPES_URL = "$API_BASE_URL/api/game/version-types"
static final String VERSION_URL = "$API_BASE_URL/api/game/versions"
static final String UPLOAD_URL = "$API_BASE_URL/api/projects/%s/upload-file"
static String API_BASE_URL;
static String getApiBaseUrl() {
return API_BASE_URL
}

static String getVersionTypesUrl() {
return "$API_BASE_URL/api/game/version-types"
}

static String getVersionUrl() {
return "$API_BASE_URL/api/game/versions"
}

static String getUploadUrl() {
return "$API_BASE_URL/api/projects/%s/upload-file"
}

Project project
CurseExtension extension
Expand Down Expand Up @@ -53,17 +65,22 @@ class CurseGradlePlugin implements Plugin<Project> {

CurseExtension ext = project.extensions.getByType(CurseExtension)

if (ext.curseGradleOptions.javaVersionAutoDetect) {
if (ext.curseGradleOptions.javaVersionAutoDetect && (!ext.curseGradleOptions.bukkitIntegration || !ext.curseGradleOptions.genericIntegration)) {
Integration.checkJavaVersion(project, curseProject)
}

if (ext.curseGradleOptions.javaIntegration) {
if (ext.curseGradleOptions.javaIntegration && (!ext.curseGradleOptions.bukkitIntegration || !ext.curseGradleOptions.genericIntegration)) {
Integration.checkJava(project, curseProject)
}
if (ext.curseGradleOptions.forgeGradleIntegration) {
if (ext.curseGradleOptions.forgeGradleIntegration && (!ext.curseGradleOptions.bukkitIntegration || !ext.curseGradleOptions.genericIntegration)) {
Integration.checkForgeGradle(project, curseProject)
}

API_BASE_URL = ext.curseGradleOptions.apiBaseUrl;
if (ext.curseGradleOptions.bukkitIntegration && (!ext.curseGradleOptions.forgeGradleIntegration || !ext.curseGradleOptions.genericIntegration)) {
API_BASE_URL = 'https://dev.bukkit.org'
}

curseProject.copyConfig()

uploadTask.mainArtifact = curseProject.mainArtifact
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ class CurseProject {
check(id != null, "Project id not set")
check(apiKey != null, "apiKey not set for project $id")
check(mainArtifact != null, "mainArtifact not set for project $id")
check(!gameVersionStrings.isEmpty(), "No Minecraft version configured for project $id")
check(!gameVersionStrings.isEmpty(), "No Game version configured for project $id")
mainArtifact.validate(id)
additionalArtifacts.each { artifact -> artifact.validate(id) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class CurseUploadTask extends DefaultTask {
int uploadFile(String json, File file) throws IOException, URISyntaxException {

int fileID
final String uploadUrl = String.format(CurseGradlePlugin.UPLOAD_URL, projectId)
final String uploadUrl = String.format(CurseGradlePlugin.getUploadUrl(), projectId)
log.info("Uploading file: {} to url: {} with json: {}", file, uploadUrl, json)

HttpClient client = HttpClientBuilder.create()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import org.gradle.api.logging.Logging

class CurseVersions {

Options curseGradleOptions = new Options()

private static final Logger log = Logging.getLogger(CurseVersions)

private static final TObjectIntMap<String> gameVersions = new TObjectIntHashMap<>()
Expand All @@ -29,16 +31,16 @@ class CurseVersions {
try {
TIntSet validVersionTypes = new TIntHashSet()

String versionTypesJson = Util.httpGet(apiKey, CurseGradlePlugin.VERSION_TYPES_URL)
String versionTypesJson = Util.httpGet(apiKey, CurseGradlePlugin.getVersionTypesUrl())
//noinspection GroovyAssignabilityCheck
VersionType[] types = Util.gson.fromJson(versionTypesJson, VersionType[].class)
types.each { type ->
if (type.slug.startsWith('minecraft') || type.slug == 'java' || type.slug == 'modloader') {
if ((type.slug.startsWith('minecraft') || type.slug == 'java' || type.slug == 'modloader' || type.slug == 'addons') || (curseGradleOptions.bukkitIntegration && type.slug == 'bukkit') || (curseGradleOptions.genericIntegration && type.slug == 'game')) {
validVersionTypes.add(type.id)
}
}

String gameVersionsJson = Util.httpGet(apiKey, CurseGradlePlugin.VERSION_URL)
String gameVersionsJson = Util.httpGet(apiKey, CurseGradlePlugin.getVersionUrl())
//noinspection GroovyAssignabilityCheck
GameVersion[] versions = Util.gson.fromJson(gameVersionsJson, GameVersion[].class)
versions.each { version ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ class Integration {
if (JavaVersion.VERSION_1_9.compareTo(javaVersion) >= 0) {
curseProject.addGameVersion('Java 9')
}
if (JavaVersion.VERSION_1_10.compareTo(javaVersion) >= 0) {
curseProject.addGameVersion('Java 10')
}
}
} catch (Throwable t) {
log.warn("Failed to check Java Version", t)
Expand Down
15 changes: 15 additions & 0 deletions src/main/groovy/com/matthewprenger/cursegradle/Options.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,23 @@ class Options {
*/
boolean javaIntegration = true

/**
* Enable integration with the Bukkit plugin. This includes setting the default apiBaseUrl.
*/
boolean bukkitIntegration = false

/**
* Enable integration with the ForgeGradle plugin. This includes setting dependencies on the reobfuscation tasks.
*/
boolean forgeGradleIntegration = true

/**
* Enable integration with generic endpoints. This requires setting the default apiBaseUrl.
*/
boolean genericIntegration = false

/**
* The api base url of the curse forge project
*/
String apiBaseUrl = 'https://minecraft.curseforge.com'
}
3 changes: 3 additions & 0 deletions test/bukkit/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.gradle/
build/
run/
Loading