From 7e99c02957773205c3babdd23f4bbf883330c975 Mon Sep 17 00:00:00 2001 From: John Engelman Date: Sat, 7 Mar 2020 09:10:04 -0600 Subject: [PATCH] bug: Fix start script template. Closes #518 --- .../shadow/internal/unixStartScript.txt | 61 +++++++++++-------- .../plugins/shadow/ApplicationSpec.groovy | 2 +- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/main/resources/com/github/jengelman/gradle/plugins/shadow/internal/unixStartScript.txt b/src/main/resources/com/github/jengelman/gradle/plugins/shadow/internal/unixStartScript.txt index 9b968497e..83526b7f4 100644 --- a/src/main/resources/com/github/jengelman/gradle/plugins/shadow/internal/unixStartScript.txt +++ b/src/main/resources/com/github/jengelman/gradle/plugins/shadow/internal/unixStartScript.txt @@ -1,4 +1,20 @@ -#!/usr/bin/env bash +#!/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. +# ############################################################################## ## @@ -33,11 +49,11 @@ DEFAULT_JVM_OPTS=${defaultJvmOpts} # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "\$*" } -die ( ) { +die () { echo echo "\$*" echo @@ -109,8 +125,8 @@ 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"` @@ -138,35 +154,30 @@ 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 # Escape application args -save() { +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" <% if ( appNameSystemProperty ) { %>"\"-D${appNameSystemProperty}=\$APP_BASE_NAME\"" <% } %>-jar "\"\$CLASSPATH\"" "\$APP_ARGS" +eval set -- \$DEFAULT_JVM_OPTS \$JAVA_OPTS \$${optsEnvironmentVar} <% if ( appNameSystemProperty ) { %>"\"-D${appNameSystemProperty}=\$APP_BASE_NAME\"" <% } %>-jar "\"\$CLASSPATH\"" "\$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" "\$@" +exec "\$JAVACMD" "\$@" \ No newline at end of file diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/ApplicationSpec.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/ApplicationSpec.groovy index 191c4cc94..ed9f309df 100644 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/ApplicationSpec.groovy +++ b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/ApplicationSpec.groovy @@ -73,7 +73,7 @@ class ApplicationSpec extends PluginSpecification { File startScript = getFile('build/install/myapp-shadow/bin/myapp') assert startScript.exists() assert startScript.text.contains("CLASSPATH=\$APP_HOME/lib/myapp-1.0-all.jar") - assert startScript.text.contains("eval set -- \"\$DEFAULT_JVM_OPTS\" \"\$JAVA_OPTS\" \"\$GRADLE_OPTS\" -jar \"\\\"\$CLASSPATH\\\"\" \"\$APP_ARGS\"") + assert startScript.text.contains("-jar \"\\\"\$CLASSPATH\\\"\" \"\$APP_ARGS\"") assert startScript.text.contains("exec \"\$JAVACMD\" \"\$@\"") cleanup: