Merge branch 'main' of https://github.tools.sap/E-Mobility/mbt-docker into multiple...
[mbt-docker.git] / build-image.sh
index 1ffbf30cc682879c6cf06dec77284030ddec0545..fbeafacc01ed950034481eed1524456091dc8101 100755 (executable)
@@ -1,38 +1,80 @@
 #!/usr/bin/env sh
 
-images="mbt-node14-java11-docker mbt-node16-java11-docker mbt-node14-java17-docker mbt-node16-java17-docker"
+shopt -s extglob
+
+images="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \
+  mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
+  mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
+  mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
+
+repositories="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \
+  mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
+  mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
+  mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
 
 usage() {
-  echo "Usage: $0 [-n <${images// /|}|all>" 1>&2; exit 1;
+  echo "    Build docker images.
+
+    Usage:
+      ./$(basename $0) [-b <name>]
+      ./$(basename $0) [-p <name>]
+      ./$(basename $0) [-c]
+      ./$(basename $0) [-h]
+
+    Options:
+      -h  Show this help.
+      -b <${images//+([[:space:]])/|}|all>  Build docker images.
+      -p <${repositories//+([[:space:]])/|}|all>  Push docker images.
+      -c  Clean docker images." 1>&2; exit 1;
 }
 
-all() {
+build_all() {
   for image in ${images}; do
     make NAME=${image}
   done
 }
 
+push_all() {
+  for repository in ${repositories}; do
+    make docker-push-registry NAME=${repository}
+  done
+}
+
 [ $# -eq 0 ] && usage
-while getopts "n:h" option; do
+while getopts ":b:p:ch" option; do
   case "${option}" in
-    n)
+    b)
       name=${OPTARG}
-      if [[ ${name} == "all" ]]; then
-        all
-      elif [[ -z "${images##*$name*}" ]]; then
+      if [ ${name} = "all" ]; then
+        build_all
+      elif [ -z "${images##*$name*}" ]; then
         make NAME=${name}
       else
-        echo "Error: Unknown image name for option argument -${OPTARG}" >&2;
+        echo "Error: Unknown image name as option argument '${OPTARG}'" >&2;
         usage
       fi
       ;;
-    \?)
-      # Invalid option
-      echo "Error: Unknown or invalid option argument for -${OPTARG}" >&2;
-      usage
+    p)
+      repository=${OPTARG}
+      if [ ${repository} = "all" ]; then
+        push_all
+      elif [ -z "${repositories##*$repository*}" ]; then
+        make docker-push-registry NAME=${repository}
+      else
+        echo "Error: Unknown repository name as option argument '${OPTARG}'" >&2;
+        usage
+      fi
+      ;;
+    c)
+      make dist-clean
       ;;
     :)
-      echo "Error: Missing option argument for -${OPTARG}" >&2;
+      echo "Error: Missing option argument for '-${OPTARG}'" >&2;
+      usage
+      ;;
+    \?)
+      # Invalid option
+      echo "Error: Unknown or invalid option for '-${OPTARG}'" >&2;
       usage
       ;;
     *|h)