diff --git a/buildImageAndStart.sh b/buildImageAndStart.sh index a1887b4..c1ae9fd 100755 --- a/buildImageAndStart.sh +++ b/buildImageAndStart.sh @@ -1,26 +1,32 @@ #!/bin/bash - accepted_java_versions=(11 17) +NAME=smartgears-helloworld +PORT=8081 +DEBUG_PORT=5005 +DEBUG=false +COMPILE=true +java_version=11 + ################################################################################ # Help # ################################################################################ -Help() -{ - # Display Help - echo "build, create and run in docker the helloworld service" - echo - echo "Syntax: buildDistribution [-n arg] [-p arg] [-j arg] [-d arg?] [-h]" - echo "options:" - echo "-n arg specifies the docker image name (default is smartgears-helloworld)." - echo "-p arg specifies the port to be exposed for the docker container to access the service (default 8081)" - echo "-j arg specify java version (default is 11)" - echo " accepted version are: ${accepted_java_versions[@]}" - echo "-d arg? enable java debug mode" - echo " arg is the debug port (default is 5005)" - echo "-h Print this Help." - echo +Help() { + # Display Help + echo "build, create and run in docker the helloworld service" + echo + echo "Syntax: buildDistribution [-n arg] [-p arg] [-j arg] [-d arg?] [-h]" + echo "options:" + echo "-s skip maven package" + echo "-n arg specifies the docker image name (default is smartgears-helloworld)." + echo "-p arg specifies the port to be exposed for the docker container to access the service (default $PORT)" + echo "-j arg specify java version (default is $java_version)" + echo " accepted version are: ${accepted_java_versions[@]}" + echo "-d arg? enable java debug mode" + echo " arg is the debug port (default is $DEBUG_PORT)" + echo "-h Print this Help." + echo } ################################################################################ @@ -31,38 +37,52 @@ Help() set -e +OPTSTRING=":sn:p:d:j:?h" -NAME=smartgears-helloworld -PORT=8081 -DEBUG_PORT=5005 -debug=false -compile=false -java_version=11 - -while getopts n:p:j:d?h flag -do - echo ${flag}; - case "${flag}" in - n) NAME=${OPTARG};; - p) PORT=${OPTARG};; - d) debug=true && DEBUG_PORT=${OPTARG:-5005};; - j) if [[ ${accepted_java_versions[@]} =~ ${OPTARG} ]] - then java_version=${OPTARG}; - else echo "Invalid java version" && echo "accepted version are: ${accepted_java_versions[@]}" && exit 1; - fi;; - h) Help && exit 0 ;; - *) echo "Invalid option" && exit 1 ;; +while getopts $OPTSTRING opt; do + # echo "Option -${opt} was triggered, Argument: ${OPTARG}" + case "${opt}" in + s) COMPILE=false && echo "compile $COMPILE" ;; + n) NAME=${OPTARG} ;; + p) PORT=${OPTARG} ;; + d) DEBUG=true + DEBUG_PORT=${OPTARG} + echo "debug enabled, port $DEBUG_PORT" + ;; + j) if [[ ${accepted_java_versions[@]} =~ ${OPTARG} ]]; then + java_version=${OPTARG} + else + echo "Invalid java version" && echo "accepted version are: ${accepted_java_versions[@]}" && exit 1 + fi + ;; + h) Help && exit 0 ;; + :) # matched when an option that is expected to have an argument is passed without one + if [ ${OPTARG} = "d" ]; then + DEBUG=true + echo "debug enabled, port $DEBUG_PORT" + else + # matched when an option that is expected to have an argument is passed without one + echo "Option -${OPTARG} requires an argument." + exit 1 + fi + ;; + ?) # match any invalid option that is passed + echo "Invalid option: -${OPTARG}." + exit 1 + ;; esac done -mvn clean package +if [ $COMPILE = true ]; then + mvn clean package +else + echo "skipping mvn package" +fi docker build -t $NAME --build-arg JAVA_VERSION=${java_version} . -if [ $debug = false ] ; then - docker run -p $PORT:8080 $NAME +if [ $DEBUG = false ]; then + docker run -p $PORT:8080 $NAME else - docker run -p $PORT:8080 -p $DEBUG_PORT:5005 -e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=y" $NAME + docker run -p $PORT:8080 -p $DEBUG_PORT:5005 -e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=y" $NAME fi - -