\\#!/bin/sh \\# \\# Copyright © 2015-2021 the original 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 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/master/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 \\# Resolve links: \#[[\#[[\$]]#]]\#0 may be a link app_path=\#[[\#[[\$]]#]]\#0 \\# Need this for daisy-chained symlinks. while APP_HOME=\#[[\#[[\$]]#]]\#{app_path%"\#[[\#[[\$]]#]]\#{app_path\\#\\#*/}"} \\# leaves a trailing /; empty if no leading path [ -h "\#[[\#[[\$]]#]]\#app_path" ] do ls=\#[[\#[[\$]]#]]\#( ls -ld "\#[[\#[[\$]]#]]\#app_path" ) link=\#[[\#[[\$]]#]]\#{ls\\#*' -> '} case \#[[\#[[\$]]#]]\#link in \\#( /*) app_path=\#[[\#[[\$]]#]]\#link ;; \\#( *) app_path=\#[[\#[[\$]]#]]\#APP_HOME\#[[\#[[\$]]#]]\#link ;; esac done APP_HOME=\#[[\#[[\$]]#]]\#( cd "\#[[\#[[\$]]#]]\#{APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" APP_BASE_NAME=\#[[\#[[\$]]#]]\#{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='"-Xmx64m" "-Xms64m"' \\# Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo "\#[[\#[[\$]]#]]\#*" } >&2 die () { echo echo "\#[[\#[[\$]]#]]\#*" echo exit 1 } >&2 \\# 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 ;; \\#( MSYS* | 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" && ! "\#[[\#[[\$]]#]]\#darwin" && ! "\#[[\#[[\$]]#]]\#nonstop" ; then case \#[[\#[[\$]]#]]\#MAX_FD in \\#( max*) MAX_FD=\#[[\#[[\$]]#]]\#( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case \#[[\#[[\$]]#]]\#MAX_FD in \\#( '' | soft) :;; \\#( *) ulimit -n "\#[[\#[[\$]]#]]\#MAX_FD" || warn "Could not set maximum file descriptor limit to \#[[\#[[\$]]#]]\#MAX_FD" esac fi \\# Collect all arguments for the java command, stacking in reverse order: \\# * args from the command line \\# * the main class name \\# * -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 if "\#[[\#[[\$]]#]]\#cygwin" || "\#[[\#[[\$]]#]]\#msys" ; then APP_HOME=\#[[\#[[\$]]#]]\#( cygpath --path --mixed "\#[[\#[[\$]]#]]\#APP_HOME" ) CLASSPATH=\#[[\#[[\$]]#]]\#( cygpath --path --mixed "\#[[\#[[\$]]#]]\#CLASSPATH" ) JAVACMD=\#[[\#[[\$]]#]]\#( cygpath --unix "\#[[\#[[\$]]#]]\#JAVACMD" ) \\# Now convert the arguments - kludge to limit ourselves to /bin/sh 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 \\# 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 fi \\# Collect all arguments for the java command; \\# * \#[[\#[[\$]]#]]\#DEFAULT_JVM_OPTS, \#[[\#[[\$]]#]]\#JAVA_OPTS, and \#[[\#[[\$]]#]]\#GRADLE_OPTS can contain fragments of \\# shell script including quotes and variable substitutions, so put them in \\# double quotes to make sure that they get re-expanded; and \\# * put everything else in single quotes, so that it's not re-expanded. set -- \ "-Dorg.gradle.appname=\#[[\#[[\$]]#]]\#APP_BASE_NAME" \ -classpath "\#[[\#[[\$]]#]]\#CLASSPATH" \ org.gradle.wrapper.GradleWrapperMain \ "\#[[\#[[\$]]#]]\#@" \\# 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. \\# eval "set -- \#[[\#[[\$]]#]]\#( printf '%s\n' "\#[[\#[[\$]]#]]\#DEFAULT_JVM_OPTS \#[[\#[[\$]]#]]\#JAVA_OPTS \#[[\#[[\$]]#]]\#GRADLE_OPTS" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | tr '\n' ' ' )" '"\#[[\#[[\$]]#]]\#@"' exec "\#[[\#[[\$]]#]]\#JAVACMD" "\#[[\#[[\$]]#]]\#@"