Skip to content
Snippets Groups Projects
Commit d888e77b authored by Johannes Mey's avatar Johannes Mey
Browse files

Merge branch 'chore/support-for-intellijj-2024.1' into 'develop'

Chore/support for intellijj 2024.2

See merge request !21
parents 0cc1822c 0de9b88c
No related branches found
No related tags found
1 merge request!21Chore/support for intellijj 2024.2
Pipeline #19812 passed
...@@ -19,6 +19,7 @@ gradle-app.setting ...@@ -19,6 +19,7 @@ gradle-app.setting
*.iml *.iml
out out
gen gen
.intellijPlatform
### Java template ### Java template
# Compiled class file # Compiled class file
......
...@@ -5,13 +5,13 @@ stages: ...@@ -5,13 +5,13 @@ stages:
- deploy - deploy
test: test:
image: openjdk:17 image: eclipse-temurin:21-jammy
stage: test stage: test
script: script:
- ./gradlew --continue --console=plain --info runPluginVerifier - ./gradlew --continue --console=plain --info verifyPlugin
jar: jar:
image: openjdk:17 image: eclipse-temurin:21-jammy
stage: jar stage: jar
script: script:
- ./gradlew --continue --console=plain --info buildPlugin - ./gradlew --continue --console=plain --info buildPlugin
......
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
### Fixed ### Fixed
## [0.3.4] - 2024-08-07
### Added
- Support for IntelliJ IDEA 2024.2.
## [0.3.3] - 2023-12-29 ## [0.3.3] - 2023-12-29
### Added ### Added
...@@ -56,7 +61,8 @@ ...@@ -56,7 +61,8 @@
### Removed ### Removed
- Support for IntelliJ IDEA 2020.2.4. Minimal version now is 2021.1.1. - Support for IntelliJ IDEA 2020.2.4. Minimal version now is 2021.1.1.
[Unreleased]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.3...HEAD [Unreleased]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.4...HEAD
[0.3.4]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.3...v0.3.4
[0.3.3]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.2...v0.3.3 [0.3.3]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.2...v0.3.3
[0.3.2]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.1...v0.3.2 [0.3.2]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.3.1...v0.3.2
[0.3.1]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.2.0...v0.3.1 [0.3.1]: https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin//compare/v0.2.0...v0.3.1
......
...@@ -3,7 +3,6 @@ import org.jetbrains.changelog.Changelog ...@@ -3,7 +3,6 @@ import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML import org.jetbrains.changelog.markdownToHTML
import org.jetbrains.grammarkit.tasks.GenerateLexerTask import org.jetbrains.grammarkit.tasks.GenerateLexerTask
import org.jetbrains.grammarkit.tasks.GenerateParserTask import org.jetbrains.grammarkit.tasks.GenerateParserTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
fun properties(key: String) = project.findProperty(key).toString() fun properties(key: String) = project.findProperty(key).toString()
...@@ -12,18 +11,18 @@ plugins { ...@@ -12,18 +11,18 @@ plugins {
id("idea") id("idea")
// Java support // Java support
id("java") id("java")
// Kotlin support // Kotlin support - read more: https://plugins.gradle.org/plugin/org.jetbrains.kotlin.jvm
id("org.jetbrains.kotlin.jvm") version "1.9.0" id("org.jetbrains.kotlin.jvm") version "2.0.10"
// gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
id("org.jetbrains.intellij") version "1.15.0" id("org.jetbrains.intellij.platform") version "2.0.0"
// gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin // gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
id("org.jetbrains.changelog") version "2.0.0" id("org.jetbrains.changelog") version "2.2.1"
// detekt linter - read more: https://detekt.github.io/detekt/gradle.html // detekt linter - read more: https://detekt.github.io/detekt/gradle.html
id("io.gitlab.arturbosch.detekt") version "1.23.0" id("io.gitlab.arturbosch.detekt") version "1.23.3"
// ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle // ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle
id("org.jlleitschuh.gradle.ktlint") version "11.3.2" id("org.jlleitschuh.gradle.ktlint") version "12.1.1"
// grammrkit - read more: https://plugins.gradle.org/plugin/org.jetbrains.grammarkit // grammrkit - read more: https://plugins.gradle.org/plugin/org.jetbrains.grammarkit
id("org.jetbrains.grammarkit") version "2022.3.1" id("org.jetbrains.grammarkit") version "2022.3.2.2"
} }
group = properties("pluginGroup") group = properties("pluginGroup")
...@@ -32,11 +31,14 @@ version = properties("pluginVersion") ...@@ -32,11 +31,14 @@ version = properties("pluginVersion")
// Configure project's dependencies // Configure project's dependencies
repositories { repositories {
mavenCentral() mavenCentral()
intellijPlatform {
defaultRepositories()
}
} }
java { java {
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_17
} }
idea { idea {
...@@ -45,17 +47,79 @@ idea { ...@@ -45,17 +47,79 @@ idea {
} }
} }
// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
dependencies {
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') })
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })
instrumentationTools()
pluginVerifier()
}
}
// Configure gradle-intellij-plugin plugin. // Configure gradle-intellij-plugin plugin.
// Read more: https://github.com/JetBrains/gradle-intellij-plugin // Read more: https://github.com/JetBrains/gradle-intellij-plugin
intellij { intellijPlatform {
pluginName.set(properties("pluginName")) projectName = project.name
version.set(properties("platformVersion"))
type.set(properties("platformType")) pluginConfiguration {
downloadSources.set(properties("platformDownloadSources").toBoolean()) id = providers.gradleProperty("pluginId")
updateSinceUntilBuild.set(true) name = providers.gradleProperty("pluginName")
version = providers.gradleProperty("platformVersion")
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file. with(it.lines()) {
plugins.set(properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty)) if (!containsAll(listOf(start, end))) {
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
}
subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML)
}
}
val changelog = project.changelog // local variable for configuration cache compatibility
// Get the latest available change notes from the changelog file
changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion ->
with(changelog) {
renderItem(
(getOrNull(pluginVersion) ?: getUnreleased())
.withHeader(false)
.withEmptySections(false),
Changelog.OutputType.HTML,
)
}
}
// productDescriptor {
// // ...
// }
ideaVersion {
sinceBuild = providers.gradleProperty("pluginSinceBuild")
untilBuild = providers.gradleProperty("pluginUntilBuild")
}
vendor {
name = "Smarobix"
email = "johannes@smarobix.com"
url = "smarobix.com"
}
}
pluginVerification {
ides {
recommended()
}
}
} }
sourceSets { sourceSets {
...@@ -82,15 +146,14 @@ tasks { ...@@ -82,15 +146,14 @@ tasks {
val generateGrammarLexer = task<GenerateLexerTask>("generateGrammarLexer") { val generateGrammarLexer = task<GenerateLexerTask>("generateGrammarLexer") {
sourceFile.set(file("src/main/grammar/Grammar.flex")) sourceFile.set(file("src/main/grammar/Grammar.flex"))
targetDir.set("src/gen/java/org/jastadd/tooling/grammar/lexer/") targetOutputDir.set(file("src/gen/java/org/jastadd/tooling/grammar/lexer/"))
targetClass.set("GrammarLexer")
purgeOldFiles.set(true) purgeOldFiles.set(true)
} }
// not fully working because of https://github.com/JetBrains/gradle-grammar-kit-plugin/issues/3 // not fully working because of https://github.com/JetBrains/gradle-grammar-kit-plugin/issues/3
val generateGrammarParser = task<GenerateParserTask>("generateGrammarParser") { val generateGrammarParser = task<GenerateParserTask>("generateGrammarParser") {
sourceFile.set(file("src/main/grammar/Grammar.bnf")) sourceFile.set(file("src/main/grammar/Grammar.bnf"))
targetRoot.set("src/gen/java") targetRootOutputDir.set(file("src/gen/java"))
pathToParser.set("/org/jastadd/tooling/grammar/GrammarParser.java") pathToParser.set("/org/jastadd/tooling/grammar/GrammarParser.java")
pathToPsiRoot.set("/org/jastadd/tooling/grammar/psi") pathToPsiRoot.set("/org/jastadd/tooling/grammar/psi")
purgeOldFiles.set(true) purgeOldFiles.set(true)
...@@ -98,15 +161,14 @@ tasks { ...@@ -98,15 +161,14 @@ tasks {
val generateAspectLexer = task<GenerateLexerTask>("generateAspectLexer") { val generateAspectLexer = task<GenerateLexerTask>("generateAspectLexer") {
sourceFile.set(file("src/main/grammar/Aspect.flex")) sourceFile.set(file("src/main/grammar/Aspect.flex"))
targetDir.set("src/gen/java/org/jastadd/tooling/aspect/lexer/") targetOutputDir.set(file("src/gen/java/org/jastadd/tooling/aspect/lexer/"))
targetClass.set("AspectLexer")
purgeOldFiles.set(true) purgeOldFiles.set(true)
} }
// not fully working because of https://github.com/JetBrains/gradle-grammar-kit-plugin/issues/3 // not fully working because of https://github.com/JetBrains/gradle-grammar-kit-plugin/issues/3
val generateAspectParser = task<GenerateParserTask>("generateAspectParser") { val generateAspectParser = task<GenerateParserTask>("generateAspectParser") {
sourceFile.set(file("src/main/grammar/Aspect.bnf")) sourceFile.set(file("src/main/grammar/Aspect.bnf"))
targetRoot.set("src/gen/java") targetRootOutputDir.set(file("src/gen/java"))
pathToParser.set("/org/jastadd/tooling/aspect/AspectParser.java") pathToParser.set("/org/jastadd/tooling/aspect/AspectParser.java")
pathToPsiRoot.set("/org/jastadd/tooling/aspect/psi") pathToPsiRoot.set("/org/jastadd/tooling/aspect/psi")
purgeOldFiles.set(true) purgeOldFiles.set(true)
...@@ -119,55 +181,12 @@ tasks { ...@@ -119,55 +181,12 @@ tasks {
dependsOn(generateAspectParser) dependsOn(generateAspectParser)
} }
// Set the compatibility versions to 1.8
withType<JavaCompile> { withType<JavaCompile> {
sourceCompatibility = "17" sourceCompatibility = "17"
targetCompatibility = "17" targetCompatibility = "17"
} }
withType<KotlinCompile> {
kotlinOptions.jvmTarget = "17"
}
withType<Detekt> { withType<Detekt> {
jvmTarget = "17" jvmTarget = "17"
} }
patchPluginXml {
version.set(properties("pluginVersion"))
sinceBuild.set(properties("pluginSinceBuild"))
untilBuild.set(properties("pluginUntilBuild"))
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
pluginDescription.set(
File(projectDir, "README.md").readText().lines().run {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
if (!containsAll(listOf(start, end))) {
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
}
subList(indexOf(start) + 1, indexOf(end))
}.joinToString("\n").run { markdownToHTML(this) }
)
// Get the latest available change notes from the changelog file
changeNotes.set(
provider {
changelog.renderItem(changelog.get(properties("pluginVersion")), Changelog.OutputType.HTML)
}
)
}
jar {
dependsOn("patchChangelog")
}
publishPlugin {
dependsOn("patchChangelog")
token.set(System.getenv("PUBLISH_TOKEN"))
// pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
channels.set(listOf(properties("pluginVersion").split('-').getOrElse(1) { "default" }.split('.').first()))
}
} }
...@@ -2,27 +2,34 @@ ...@@ -2,27 +2,34 @@
# -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html # -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
pluginGroup = org.jastadd pluginGroup = org.jastadd
pluginName = JastAdd pluginId = JastAdd
pluginVersion = 0.3.3 pluginName = JastAdd Language Support
pluginVersion = 0.3.4
pluginRepositoryUrl = https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin/ pluginRepositoryUrl = https://git-st.inf.tu-dresden.de/jastadd/jetbrains-plugin/
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html # See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# for insight into build numbers and IntelliJ Platform versions. # for insight into build numbers and IntelliJ Platform versions.
pluginSinceBuild = 223 pluginSinceBuild = 223
pluginUntilBuild = 233.* pluginUntilBuild = 242.*
## Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
## See https://jb.gg/intellij-platform-builds-list for available build versions.
#pluginVerifierIdeVersions = 2022.2.4, 2022.3.1, 2023.1.2
platformType = IC platformType = IC
platformVersion = 2023.3.2 platformVersion = 2024.2
platformDownloadSources = true
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 # Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
platformPlugins = com.intellij.java platformPlugins =
# Example: platformBundledPlugins = com.intellij.java
platformBundledPlugins = com.intellij.java
# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 8.9
# Opt-out flag for bundling Kotlin standard library. # Opt-out flag for bundling Kotlin standard library.
# See https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library for details. # See https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library for details.
kotlin.stdlib.default.dependency = false kotlin.stdlib.default.dependency = false
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
org.gradle.configuration-cache = true
# Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html
org.gradle.caching = true
No preview for this file type
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
#!/usr/bin/env sh #!/bin/sh
# #
# Copyright 2015 the original author or authors. # Copyright © 2015-2021 the original authors.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
...@@ -17,78 +17,113 @@ ...@@ -17,78 +17,113 @@
# #
############################################################################## ##############################################################################
## #
## Gradle start up script for UN*X # Gradle start up script for POSIX generated by Gradle.
## #
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
############################################################################## ##############################################################################
# Attempt to set APP_HOME # Attempt to set APP_HOME
# Resolve links: $0 may be a link # Resolve links: $0 may be a link
PRG="$0" app_path=$0
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do # Need this for daisy-chained symlinks.
ls=`ls -ld "$PRG"` while
link=`expr "$ls" : '.*-> \(.*\)$'` APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
if expr "$link" : '/.*' > /dev/null; then [ -h "$app_path" ]
PRG="$link" do
else ls=$( ls -ld "$app_path" )
PRG=`dirname "$PRG"`"/$link" link=${ls#*' -> '}
fi case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle" # This is normally unused
APP_BASE_NAME=`basename "$0"` # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD=maximum
warn () { warn () {
echo "$*" echo "$*"
} } >&2
die () { die () {
echo echo
echo "$*" echo "$*"
echo echo
exit 1 exit 1
} } >&2
# OS specific support (must be 'true' or 'false'). # OS specific support (must be 'true' or 'false').
cygwin=false cygwin=false
msys=false msys=false
darwin=false darwin=false
nonstop=false nonstop=false
case "`uname`" in case "$( uname )" in #(
CYGWIN* ) CYGWIN* ) cygwin=true ;; #(
cygwin=true Darwin* ) darwin=true ;; #(
;; MSYS* | MINGW* ) msys=true ;; #(
Darwin* ) NONSTOP* ) nonstop=true ;;
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables # IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java" JAVACMD=$JAVA_HOME/jre/sh/java
else else
JAVACMD="$JAVA_HOME/bin/java" JAVACMD=$JAVA_HOME/bin/java
fi fi
if [ ! -x "$JAVACMD" ] ; then if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
...@@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the ...@@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
else else
JAVACMD="java" 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. 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 Please set the JAVA_HOME variable in your environment to match the
...@@ -105,79 +140,105 @@ location of your Java installation." ...@@ -105,79 +140,105 @@ location of your Java installation."
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
MAX_FD_LIMIT=`ulimit -H -n` case $MAX_FD in #(
if [ $? -eq 0 ] ; then max*)
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
MAX_FD="$MAX_FD_LIMIT" # shellcheck disable=SC3045
fi MAX_FD=$( ulimit -H -n ) ||
ulimit -n $MAX_FD warn "Could not query maximum file descriptor limit"
if [ $? -ne 0 ] ; then esac
warn "Could not set maximum file descriptor limit: $MAX_FD" case $MAX_FD in #(
fi '' | soft) :;; #(
else *)
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
fi # shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi fi
# For Darwin, add options to specify how the application appears in the dock # Collect all arguments for the java command, stacking in reverse order:
if $darwin; then # * args from the command line
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" # * the main class name
fi # * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then if "$cygwin" || "$msys" ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 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 JAVACMD=$( cygpath --unix "$JAVACMD" )
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else # Now convert the arguments - kludge to limit ourselves to /bin/sh
eval `echo args$i`="\"$arg\"" for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi fi
i=`expr $i + 1` # Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done 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 fi
# Escape application args # Collect all arguments for the java command;
save () { # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done # shell script including quotes and variable substitutions, so put them in
echo " " # double quotes to make sure that they get re-expanded; and
} # * put everything else in single quotes, so that it's not re-expanded.
APP_ARGS=`save "$@"`
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
# Collect all arguments for the java command, following the shell quoting and substitution rules eval "set -- $(
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@" exec "$JAVACMD" "$@"
...@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal ...@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=. if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
...@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome ...@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init if %ERRORLEVEL% equ 0 goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
...@@ -54,7 +55,7 @@ goto fail ...@@ -54,7 +55,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init if exist "%JAVA_EXE%" goto execute
echo. echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
...@@ -64,38 +65,26 @@ echo location of your Java installation. ...@@ -64,38 +65,26 @@ echo location of your Java installation.
goto fail 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 :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @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 :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd if %ERRORLEVEL% equ 0 goto mainEnd
:fail :fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code! rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 set EXIT_CODE=%ERRORLEVEL%
exit /b 1 if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd :mainEnd
if "%OS%"=="Windows_NT" endlocal if "%OS%"=="Windows_NT" endlocal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment