Merge branch 'develop' into features/JAL-4219_extended_fasta_rna_ss
[jalview.git] / utils / dev_macos_install.sh
index e46f524..7c5fd15 100755 (executable)
 #!/usr/bin/env bash
 
 # perform a dev build and install on local macOS machine
-INSTALLERVOL="Jalview Non-Release Installer"
-APP="Jalview Local.app"
-
+APP=""
+INSTALLERVOL=""
 APPLICATIONS=/Applications
-CHANNEL=NOCHANNEL
+CHANNEL="LOCAL"
 DMG=build/install4j/11/Jalview_Local-TEST-macos-java_11.dmg
+GRADLE=""
+APPBASEOVERRIDEARG=""
+MEDIA=macosArchive
+CLEAN="clean"
+JAVA=11
+x=$(grep jalview.version= RELEASE)
+VERSION=${x#*=}
+
+while getopts ":i:n:a:c:d:go:m:j:l" opt; do
+  case ${opt} in
+    i)
+      INSTALLERVOL="${OPTARG}"
+      ;;
+    n)
+      APP="${OPTARG}"
+      ;;
+    a)
+      APPLICATIONS="${OPTARG}"
+      ;;
+    c)
+      CHANNEL="${OPTARG}"
+      ;;
+    d)
+      DMG="${OPTARG}"
+      ;;
+    g)
+      GRADLE=1
+      ;;
+    o)
+      APPBASEOVERRIDEARG="-Pgetdown_appbase_override=${OPTARG}"
+      ;;
+    m)
+      MEDIA="${OPTARG}"
+      ;;
+    j)
+      JAVA="${OPTARG}"
+      ;;
+    l)
+      CLEAN=""
+      ;;
+    ?)
+      echo "Invalid option -${OPTARG}"
+      exit 1;
+      ;;
+  esac
+done
 
+if [ -z $APP ]; then
+  ARCH=x64
+  if [ $(uname -m) = "arm64" ]; then
+    ARCH=aarch64
+  fi
+  OS=macos
+  case $(uname -o) in
+    Darwin)
+      OS=macos
+      ;;
+    Windows)
+      OS=windows
+      ;;
+    Linux)
+      OS=linux
+      ;;
+    *)
+      OS=unix
+      ;;
+  esac
+  case ${CHANNEL} in
+    DEVELOP)
+      APP="Jalview Develop"
+      DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-d$(date +%Y%m%d)-${OS}-${ARCH}-java_${JAVA}.dmg"
+      ;;
+    TEST-RELEASE)
+      APP="Jalview Test"
+      DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-test-${OS}-${ARCH}-java_${JAVA}.dmg"
+      ;;
+    RELEASE)
+      APP="Jalview"
+      DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-${OS}-${ARCH}-java_${JAVA}.dmg"
+      ;;
+    *)
+      APP="Jalview Local"
+      DMG=build/install4j/11/${APP// /_}-TEST-macos-java_11.dmg
+      ;;
+  esac
+fi
+if [ -z $INSTALLERVOL ]; then
+  INSTALLERVOL="${APP} Installer"
+fi
 
-if [ x$1 != "xnogradle" ]; then
-  gradle installers -PCHANNEL=LOCAL -Pinstall4j_media_types=macosArchive
+if [ "${GRADLE}" = 1 ]; then
+  echo "Running: gradle ${CLEAN} installers -PCHANNEL="${CHANNEL}" -Pinstall4j_media_types="${MEDIA}" ${APPBASEOVERRIDEARG} -PJAVA_VERSION=${JAVA}"
+  gradle ${CLEAN} installers -PCHANNEL="${CHANNEL}" -Pinstall4j_media_types="${MEDIA}" ${APPBASEOVERRIDEARG} -PJAVA_VERSION=${JAVA}
 else
   echo "Not running gradle installers"
 fi
 
 if [ $? = 0 ]; then
-  umount "/Volumes/$INSTALLERVOL"
+  if [ -e "/Volumes/$INSTALLERVOL" ]; then
+    hdiutil detach "/Volumes/$INSTALLERVOL"
+  fi
   if [ -e "$DMG" ]; then
     open $DMG
   else
     echo "No DMG file '$DMG'" 1>&2
-    exit 1
+    exit 2
   fi
   echo "Mounting '$DMG' at /Volumes"
   N=0
-  while [ \! -e "/Volumes/$INSTALLERVOL/$APP" ]; do
-    if [ $(( N%1000 )) = 0 ]; then
-      echo -n "."
-    fi
+  MOUNTEDAPP="/Volumes/$INSTALLERVOL/$APP.app"
+  echo "Waiting for '$MOUNTEDAPP' to appear"
+  while [ \! -e "$MOUNTEDAPP" ]; do
+    echo -n "."
     N=$(( N+1 ))
+    if [ $N = 40 ]; then
+      echo ""
+      echo "Looks like something wrong with the DMG '$DMG'"
+      exit 4
+    fi
+    sleep 0.1
   done
   echo ""
+else
+  echo "Problem with gradle build: exit code $?"
+  exit 3
 fi
-if [ -e "/Volumes/$INSTALLERVOL/$APP" ]; then
-  echo "Removing '$APPLICATIONS/$APP'"
-  /bin/rm -r "$APPLICATIONS/$APP"
-  echo "Syncing '/Volumes/$INSTALLERVOL/$APP' to '$APPLICATIONS/'"
-  rsync -avh "/Volumes/$INSTALLERVOL/$APP" "$APPLICATIONS/"
+
+if [ -e "$MOUNTEDAPP" ]; then
+  echo "Removing '$APPLICATIONS/$APP.app'"
+  /bin/rm -r "$APPLICATIONS/$APP.app"
+  echo "Syncing '$MOUNTEDAPP' to '$APPLICATIONS/'"
+  rsync -avh "$MOUNTEDAPP" "$APPLICATIONS/"
   echo "Unmounting '/Volumes/$INSTALLERVOL'"
-  umount "/Volumes/$INSTALLERVOL"
+  hdiutil detach "/Volumes/$INSTALLERVOL"
 fi