Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Maintenance - Mise à jour mensuelle Lundi 6 Février entre 7h00 et 9h00
Open sidebar
urgi-is
FAIDARE
Commits
1e8a2d36
Commit
1e8a2d36
authored
Aug 27, 2021
by
Jean-Baptiste Nizet
Committed by
Exbrayat Cédric
Sep 02, 2021
Browse files
feat: move css and js to web project built with webpack
parent
712d39ef
Changes
23
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
1e8a2d36
...
...
@@ -226,3 +226,4 @@ gradle-app.setting
# End of https://www.gitignore.io/api/gradle,eclipse,intellij,visualstudiocode,kotlin,git,macos,linux
frontend/package-lock.json
/web/node_modules/
backend/build.gradle.kts
View file @
1e8a2d36
import
org.gradle.api.tasks.testing.logging.TestExceptionFormat
import
org.springframework.boot.gradle.tasks.buildinfo.BuildInfo
import
org.springframework.boot.gradle.tasks.bundling.BootJar
import
org.springframework.boot.gradle.tasks.run.BootRun
buildscript
{
repositories
{
mavenLocal
()
mavenCentral
()
}
}
...
...
@@ -20,7 +17,6 @@ plugins {
id
(
"org.owasp.dependencycheck"
)
version
"6.0.3"
}
java
{
sourceCompatibility
=
JavaVersion
.
VERSION_1_8
}
...
...
@@ -40,7 +36,7 @@ tasks {
options
.
compilerArgs
.
add
(
"-parameters"
)
}
getByName
<
Copy
>(
"
processResources
"
)
{
processResources
{
inputs
.
property
(
"app"
,
"gnpis"
)
filesMatching
(
"bootstrap.yml"
)
{}
...
...
@@ -51,21 +47,44 @@ tasks {
// but it's better to do that than using the bootInfo() method of the springBoot closure, because that
// makes the test task out of date, which makes the build much longer.
// See https://github.com/spring-projects/spring-boot/issues/13152
val
buildInfo
by
c
re
at
ing
(
BuildInfo
::
class
)
{
val
buildInfo
by
re
gister
ing
(
BuildInfo
::
class
)
{
destinationDir
=
file
(
"$buildDir/buildInfo"
)
}
val
bootJar
by
getting
(
BootJar
::
class
)
{
bootJar
{
archiveName
=
"${rootProject.name}.jar"
dependsOn
(
buildInfo
)
dependsOn
(
":web:assemble"
)
// replace the script.js and style.css file names referenced in main.html
// by their actual name, containing the content hash
filesMatching
(
"**/layout/main.html"
)
{
val
webAssetsDir
=
project
(
":web"
).
file
(
"build/dist/assets/"
);
val
scriptFileName
=
webAssetsDir
.
list
().
first
{
it
.
startsWith
(
"script"
)
&&
it
.
endsWith
(
".js"
)
}
val
styleFileName
=
webAssetsDir
.
list
().
first
{
it
.
startsWith
(
"style"
)
&&
it
.
endsWith
(
".css"
)
}
filter
{
line
->
if
(
line
.
contains
(
"script.js"
))
{
line
.
replace
(
"script.js"
,
scriptFileName
)
}
else
if
(
line
.
contains
(
"style.css"
))
{
line
.
replace
(
"style.css"
,
styleFileName
)
}
else
{
line
}
}
}
into
(
"BOOT-INF/classes/META-INF"
)
{
from
(
buildInfo
.
destinationDir
)
from
(
buildInfo
.
map
{
it
.
destinationDir
})
}
into
(
"BOOT-INF/classes/static"
)
{
from
(
project
(
":web"
).
file
(
"build/dist"
))
}
launchScript
()
}
val
test
by
getting
(
Test
::
class
)
{
test
{
useJUnitPlatform
()
testLogging
{
exceptionFormat
=
TestExceptionFormat
.
FULL
...
...
@@ -73,7 +92,7 @@ tasks {
outputs
.
dir
(
snippetsDir
)
}
val
jacocoTestReport
by
getting
(
JacocoReport
::
class
)
{
jacocoTestReport
{
reports
{
xml
.
setEnabled
(
true
)
html
.
setEnabled
(
true
)
...
...
backend/src/main/resources/application.yml
View file @
1e8a2d36
...
...
@@ -90,3 +90,11 @@ server:
servlet
:
context-path
:
/faidare-dev
---
spring
:
profiles
:
dev
resources
:
static-locations
:
-
classpath:/static/
-
file:./web/build/dist/
backend/src/main/resources/static/assets/script.js
deleted
100644 → 0
View file @
712d39ef
const
faidare
=
(()
=>
{
function
initializePopovers
()
{
const
popoverTriggerList
=
[].
slice
.
call
(
document
.
querySelectorAll
(
'
[data-bs-toggle="popover"]
'
))
popoverTriggerList
.
forEach
(
popoverTriggerEl
=>
{
const
options
=
{};
const
contentSelector
=
popoverTriggerEl
.
dataset
.
bsElement
;
if
(
contentSelector
)
{
const
content
=
document
.
querySelector
(
contentSelector
);
if
(
content
)
{
options
.
content
=
()
=>
{
const
element
=
document
.
createElement
(
'
div
'
);
element
.
innerHTML
=
content
.
innerHTML
;
return
element
;
};
options
.
html
=
true
;
}
else
{
throw
new
Error
(
'
element with selector
'
+
contentSelector
+
'
not found
'
);
}
}
return
new
bootstrap
.
Popover
(
popoverTriggerEl
,
options
);
});
}
function
markerColor
(
location
)
{
switch
(
location
.
locationType
)
{
case
'
Origin site
'
:
return
'
red
'
;
case
'
Collecting site
'
:
return
'
blue
'
;
case
'
Evaluation site
'
:
return
'
green
'
;
}
return
'
purple
'
;
}
function
markerIconUrl
(
contextPath
,
location
)
{
return
`
${
contextPath
}
/assets/images/marker-icon-
${
markerColor
(
location
)}
.png`
;
}
function
initializeMap
(
options
)
{
if
(
!
options
.
locations
.
length
)
{
return
;
}
const
mapContainerElement
=
document
.
querySelector
(
'
#map-container
'
);
mapContainerElement
.
classList
.
remove
(
"
d-none
"
);
const
mapElement
=
document
.
querySelector
(
'
#map
'
);
const
map
=
L
.
map
(
mapElement
);
L
.
tileLayer
(
'
https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}
'
,
{
attribution
:
'
Tiles © Esri — Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI,
'
+
'
Esri China (Hong Kong), Esri (Thailand), TomTom, 2012
'
}).
addTo
(
map
);
const
firstLocation
=
options
.
locations
[
0
];
map
.
setView
([
firstLocation
.
latitude
,
firstLocation
.
longitude
],
5
);
const
markers
=
L
.
markerClusterGroup
();
const
mapMarkers
=
[];
for
(
const
location
of
options
.
locations
)
{
const
icon
=
L
.
icon
({
iconUrl
:
markerIconUrl
(
options
.
contextPath
,
location
),
iconAnchor
:
[
12
,
41
],
// point of the icon which will correspond to marker's location
});
const
popupElement
=
document
.
createElement
(
'
div
'
);
const
titleElement
=
document
.
createElement
(
'
strong
'
);
titleElement
.
innerText
=
location
.
locationName
;
const
typeElement
=
document
.
createElement
(
'
div
'
);
typeElement
.
innerText
=
location
.
locationType
;
const
linkElement
=
document
.
createElement
(
'
a
'
);
linkElement
.
innerText
=
'
Details
'
;
linkElement
.
href
=
`
${
options
.
contextPath
}
/sites/
${
location
.
locationDbId
}
`
;
popupElement
.
appendChild
(
titleElement
);
popupElement
.
appendChild
(
typeElement
);
popupElement
.
appendChild
(
linkElement
);
const
marker
=
L
.
marker
(
[
location
.
latitude
,
location
.
longitude
],
{
icon
:
icon
}
);
markers
.
addLayer
(
marker
.
bindPopup
(
popupElement
));
mapMarkers
.
push
(
marker
);
}
const
initialZoom
=
map
.
getZoom
();
map
.
fitBounds
(
L
.
featureGroup
(
mapMarkers
).
getBounds
());
const
markerZoom
=
map
.
getZoom
();
setTimeout
(()
=>
{
map
.
setZoom
(
Math
.
min
(
initialZoom
,
markerZoom
));
map
.
addLayer
(
markers
);
},
100
);
}
return
{
initializePopovers
,
initializeMap
};
})();
backend/src/main/resources/static/assets/style.css
deleted
100644 → 0
View file @
712d39ef
.label
{
font-weight
:
500
;
}
.popover
{
max-width
:
min
(
80vw
,
600px
);
}
#map
{
height
:
min
(
400px
,
60vh
);
}
.map-legend
img
{
height
:
1.5rem
;
}
backend/src/main/resources/templates/layout/main.html
View file @
1e8a2d36
...
...
@@ -6,13 +6,7 @@
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
<meta
content=
"width=device-width, initial-scale=1"
name=
"viewport"
/>
<link
href=
"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css"
rel=
"stylesheet"
integrity=
"sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We"
crossorigin=
"anonymous"
>
<link
th:href=
"@{/assets/style.css}"
rel=
"stylesheet"
>
<link
rel=
"stylesheet"
href=
"https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity=
"sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=
""
/>
<link
rel=
"stylesheet"
href=
"https://unpkg.com/leaflet.markercluster@1.1.0/dist/MarkerCluster.css"
/>
<link
rel=
"stylesheet"
href=
"https://unpkg.com/leaflet.markercluster@1.1.0/dist/MarkerCluster.Default.css"
/>
<link
rel=
"shortcut icon"
th:href=
"@{/static/assets/images/favicon.ico}"
type=
"image/x-icon"
/>
</head>
...
...
@@ -31,11 +25,6 @@
common footer
</footer>
</div>
<script
src=
"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js"
integrity=
"sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj"
crossorigin=
"anonymous"
></script>
<script
src=
"https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"
integrity=
"sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=
""
></script>
<script
src=
"https://unpkg.com/leaflet.markercluster@1.1.0/dist/leaflet.markercluster.js"
></script>
<script
type=
"text/javascript"
th:src=
"@{/assets/script.js}"
></script>
<script
type=
"text/javascript"
th:replace=
"${script}"
></script>
</body>
...
...
gradle/wrapper/gradle-wrapper.jar
View file @
1e8a2d36
No preview for this file type
gradle/wrapper/gradle-wrapper.properties
View file @
1e8a2d36
distributionBase
=
GRADLE_USER_HOME
distributionPath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-
5.0
-bin.zip
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-
7.2
-bin.zip
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
gradlew
View file @
1e8a2d36
#!/usr/bin/env sh
#!/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 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/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
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
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
SAVED
=
"
`
pwd
`
"
cd
"
`
dirname
\"
$PRG
\"
`
/"
>
/dev/null
APP_HOME
=
"
`
pwd
-P
`
"
cd
"
$SAVED
"
>
/dev/null
APP_HOME
=
$(
cd
"
${
APP_HOME
:-
./
}
"
&&
pwd
-P
)
||
exit
APP_NAME
=
"Gradle"
APP_BASE_NAME
=
`
basename
"
$0
"
`
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"'
DEFAULT_JVM_OPTS
=
'"-Xmx64m"
"-Xms64m"
'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD
=
"
maximum
"
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
;;
MINGW
*
)
msys
=
true
;;
NONSTOP
*
)
nonstop
=
true
;;
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
"
JAVACMD
=
$JAVA_HOME
/jre/sh/java
else
JAVACMD
=
"
$JAVA_HOME
/bin/java
"
JAVACMD
=
$JAVA_HOME
/bin/java
fi
if
[
!
-x
"
$JAVACMD
"
]
;
then
die
"ERROR: JAVA_HOME is set to an invalid directory:
$JAVA_HOME
...
...
@@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
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.
Please set the JAVA_HOME variable in your environment to match the
...
...
@@ -89,84 +140,95 @@ 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
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
# 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
# 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
"
)
# 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
\"
"
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
i
=
$((
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
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
# 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
"
"
$@
"
gradlew.bat
View file @
1e8a2d36
@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