diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6985a63..b1de857 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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 }} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6978ab0..ace98b5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ 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 { @@ -10,7 +10,7 @@ ext { 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' diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 62d4c05..e708b1c 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 604320c..442d913 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -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 diff --git a/gradlew b/gradlew index fbd7c51..4f906e0 100755 --- a/gradlew +++ b/gradlew @@ -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 diff --git a/gradlew.bat b/gradlew.bat index 5093609..107acd3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -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. @@ -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% @@ -64,21 +64,6 @@ 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 @@ -86,7 +71,7 @@ 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 diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy index e144cab..11013ae 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseGradlePlugin.groovy @@ -16,10 +16,22 @@ class CurseGradlePlugin implements Plugin { static final Set VALID_RELEASE_TYPES = ['alpha', 'beta', 'release'] static final Set 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 @@ -53,17 +65,22 @@ class CurseGradlePlugin implements Plugin { 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 diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseProject.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseProject.groovy index e3b1534..04165e7 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseProject.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseProject.groovy @@ -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) } } diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy index 76581fd..28c32c3 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseUploadTask.groovy @@ -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() diff --git a/src/main/groovy/com/matthewprenger/cursegradle/CurseVersions.groovy b/src/main/groovy/com/matthewprenger/cursegradle/CurseVersions.groovy index be5c3f2..1f67636 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/CurseVersions.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/CurseVersions.groovy @@ -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 gameVersions = new TObjectIntHashMap<>() @@ -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 -> diff --git a/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy b/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy index 2a039d4..1aa32ad 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/Integration.groovy @@ -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) diff --git a/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy b/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy index 2f8ea4b..0f37e23 100644 --- a/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy +++ b/src/main/groovy/com/matthewprenger/cursegradle/Options.groovy @@ -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' } diff --git a/test/bukkit/.gitignore b/test/bukkit/.gitignore new file mode 100644 index 0000000..70ee173 --- /dev/null +++ b/test/bukkit/.gitignore @@ -0,0 +1,3 @@ +.gradle/ +build/ +run/ \ No newline at end of file diff --git a/test/bukkit/build.gradle b/test/bukkit/build.gradle new file mode 100644 index 0000000..15004b5 --- /dev/null +++ b/test/bukkit/build.gradle @@ -0,0 +1,167 @@ +import de.undercouch.gradle.tasks.download.Download +import org.apache.tools.ant.filters.ReplaceTokens + +buildscript { + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath fileTree(dir: projectDir, include: ['CurseGradle-*-all.jar']) + } +} + +plugins { + id 'com.github.johnrengelman.shadow' version '1.2.4' + id 'de.undercouch.download' version '3.1.2' +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'com.matthewprenger.cursegradle' + +repositories { + mavenLocal() + mavenCentral() +} + +version = '1.0' +group = 'com.matthewprenger.cursegradletestplugin' +archivesBaseName = 'cursegradletestplugin' + +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' + +configurations { + plugin { + transitive = false + } + compileOnly.extendsFrom(plugin) +} + +dependencies { + compile group: 'org.spigotmc', name: 'spigot-api', version: '1.16.5-R0.1-SNAPSHOT' + compile group: 'org.spigotmc', name: 'spigot', version: '1.16.5-R0.1-SNAPSHOT' +} + +compileJava.dependsOn { + buildSpigot +} + +task setupDevServer(dependsOn: 'extractServerJar', type: Copy) { + from 'config/serverfiles' + into 'run' +} + +task extractServerJar(type: Copy) { + from { + configurations.runtime + } + include('spigot-' + '1.16.5-R0.1-SNAPSHOT' + '.jar') + rename('spigot-' + '1.16.5-R0.1-SNAPSHOT' + '.jar', 'server.jar') + into 'run' +} + +task copyPluginToTestserver(dependsOn: ['build'], type: Copy) { + from "${buildDir}/libs" + into 'run/plugins' +} + +task extractDependencyPlugins(type: Copy) { + from { + configurations.plugin + } + into 'run/plugins' +} + +task prepareDevServer(dependsOn: ['buildSpigot', 'setupDevServer', 'copyPluginToTestserver', 'extractDependencyPlugins']) {} + +task startDevServer(dependsOn: [prepareDevServer], type: JavaExec) { + classpath configurations.compile, configurations.runtime + main = 'org.bukkit.craftbukkit.Main' + workingDir = 'run' + standardInput = System.in +} + +def spigotBuildDir = new File("$buildDir/spigot/") + +task setupWorkspace(dependsOn: ['buildSpigot']) { +} + +task buildSpigot(type: JavaExec) { + if (hasSpigot()) { + enabled = false; + dependsOn = []; + } else { + dependsOn = ['cleanSpigotBuild', 'downloadBuildTool'] + } + main = '-jar' + args new File(spigotBuildDir, 'BuildTools.jar').getAbsolutePath(), '--rev', '1.16.5' + workingDir = spigotBuildDir +} + +task downloadBuildTool(type: Download) { + spigotBuildDir.mkdirs() + src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar' + dest new File(spigotBuildDir, 'BuildTools.jar') +} + +task cleanSpigotBuild() { + spigotBuildDir.deleteDir() +} + +def hasSpigot() { + def groupId = 'org.spigotmc' + def version = '1.16.5-R0.1-SNAPSHOT' + return hasArtifact(groupId, 'spigot-api', version) && hasArtifact(groupId, 'spigot', version) +} + +def hasArtifact(groupId, artifactId, version) { + def localMavenRepo = new File(new File(ant.properties['user.home'] as String), '.m2/repository/') + def file = new File(localMavenRepo, groupId.replace('.', '/') + '/' + artifactId + '/' + version + '/') + return file.exists() +} + +task javadocJar(type: Jar, dependsOn: javadoc) { + from javadoc.destinationDir + classifier = 'javadoc' +} + +task sourcesJar(type: Jar) { + from sourceSets.main.allSource + classifier = 'sources' +} + +artifacts { + archives jar + archives javadocJar + archives sourcesJar +} + +assemble.dependsOn javadocJar, sourcesJar + +curseforge { + apiKey = System.getenv('CURSEFORGE_API_KEY') ?: 'unset' + options { + debug = true + bukkitIntegration = true + } + project { + id = '70690' + changelog = 'Changes' + releaseType = 'alpha' + + addGameVersion '1.16' + + mainArtifact(jar) { + displayName = "My Test Plugin version $version" + } + + addArtifact(javadocJar) { + displayName = "My Test Plugin Javadoc version $version" + } + + addArtifact(sourcesJar) { + displayName = "My Test Plugin Sources version $version" + } + } +} diff --git a/test/bukkit/gradle/wrapper/gradle-wrapper.jar b/test/bukkit/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..94336fc Binary files /dev/null and b/test/bukkit/gradle/wrapper/gradle-wrapper.jar differ diff --git a/test/bukkit/gradle/wrapper/gradle-wrapper.properties b/test/bukkit/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..290541c --- /dev/null +++ b/test/bukkit/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/test/bukkit/gradlew b/test/bukkit/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/test/bukkit/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; 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 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/test/bukkit/gradlew.bat b/test/bukkit/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/test/bukkit/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +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% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/test/bukkit/settings.gradle b/test/bukkit/settings.gradle new file mode 100644 index 0000000..081a8d7 --- /dev/null +++ b/test/bukkit/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'cursegradletestplugin' diff --git a/test/mdk/build.gradle b/test/mdk/build.gradle index a2abb8a..7dadcd8 100644 --- a/test/mdk/build.gradle +++ b/test/mdk/build.gradle @@ -1,11 +1,11 @@ buildscript { repositories { - maven { url = 'https://files.minecraftforge.net/maven' } + maven { url = 'https://maven.minecraftforge.net/' } jcenter() mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true classpath fileTree(dir: projectDir, include: ['CurseGradle-*-all.jar']) } } @@ -19,11 +19,11 @@ archivesBaseName = 'cursegradletestmod' sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' minecraft { - mappings channel: 'snapshot', version: '20200514-1.16' + mappings channel: 'snapshot', version: '20210309-1.16.5' } dependencies { - minecraft 'net.minecraftforge:forge:1.16.1-32.0.63' + minecraft 'net.minecraftforge:forge:1.16.5-36.1.16' } task javadocJar(type: Jar, dependsOn: javadoc) { @@ -54,6 +54,9 @@ curseforge { changelog = 'Changes' releaseType = 'alpha' + addGameVersion 'Forge' + addGameVersion '1.16.5' + mainArtifact(jar) { displayName = "My Test Mod version $version" } diff --git a/test/mdk/gradle/wrapper/gradle-wrapper.jar b/test/mdk/gradle/wrapper/gradle-wrapper.jar index 7a3265e..e708b1c 100644 Binary files a/test/mdk/gradle/wrapper/gradle-wrapper.jar and b/test/mdk/gradle/wrapper/gradle-wrapper.jar differ diff --git a/test/mdk/gradle/wrapper/gradle-wrapper.properties b/test/mdk/gradle/wrapper/gradle-wrapper.properties index 1d5b29f..442d913 100644 --- a/test/mdk/gradle/wrapper/gradle-wrapper.properties +++ b/test/mdk/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip diff --git a/test/mdk/gradlew b/test/mdk/gradlew index cccdd3d..4f906e0 100644 --- a/test/mdk/gradlew +++ b/test/mdk/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -66,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -109,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +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 @@ -138,19 +156,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -159,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/test/mdk/gradlew.bat b/test/mdk/gradlew.bat index f955316..107acd3 100644 --- a/test/mdk/gradlew.bat +++ b/test/mdk/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe 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. @@ -35,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% @@ -45,28 +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