Merge branch 'improvement/JAL-4409_implement_extra_schemes_in_getdown' into develop
[jalview.git] / utils / dev_macos_install.sh
1 #!/usr/bin/env bash
2
3 # perform a dev build and install on local macOS machine
4 APP=""
5 INSTALLERVOL=""
6 APPLICATIONS=/Applications
7 CHANNEL="LOCAL"
8 DMG=build/install4j/11/Jalview_Local-TEST-macos-java_11.dmg
9 GRADLE=""
10 APPBASEOVERRIDEARG=""
11 MEDIA=macosArchive
12 CLEAN="clean"
13 JAVA=11
14 x=$(grep jalview.version= RELEASE)
15 VERSION=${x#*=}
16
17 while getopts ":i:n:a:c:d:go:m:j:l" opt; do
18   case ${opt} in
19     i)
20       INSTALLERVOL="${OPTARG}"
21       ;;
22     n)
23       APP="${OPTARG}"
24       ;;
25     a)
26       APPLICATIONS="${OPTARG}"
27       ;;
28     c)
29       CHANNEL="${OPTARG}"
30       ;;
31     d)
32       DMG="${OPTARG}"
33       ;;
34     g)
35       GRADLE=1
36       ;;
37     o)
38       APPBASEOVERRIDEARG="-Pgetdown_appbase_override=${OPTARG}"
39       ;;
40     m)
41       MEDIA="${OPTARG}"
42       ;;
43     j)
44       JAVA="${OPTARG}"
45       ;;
46     l)
47       CLEAN=""
48       ;;
49     ?)
50       echo "Invalid option -${OPTARG}"
51       exit 1;
52       ;;
53   esac
54 done
55
56 if [ -z $APP ]; then
57   ARCH=x64
58   if [ $(uname -m) = "arm64" ]; then
59     ARCH=aarch64
60   fi
61   OS=macos
62   case $(uname -o) in
63     Darwin)
64       OS=macos
65       ;;
66     Windows)
67       OS=windows
68       ;;
69     Linux)
70       OS=linux
71       ;;
72     *)
73       OS=unix
74       ;;
75   esac
76   case ${CHANNEL} in
77     DEVELOP)
78       APP="Jalview Develop"
79       DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-d$(date +%Y%m%d)-${OS}-${ARCH}-java_${JAVA}.dmg"
80       ;;
81     TEST-RELEASE)
82       APP="Jalview Test"
83       DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-test-${OS}-${ARCH}-java_${JAVA}.dmg"
84       ;;
85     RELEASE)
86       APP="Jalview"
87       DMG="build/install4j/11/${APP// /_}-${VERSION//\./_}-${OS}-${ARCH}-java_${JAVA}.dmg"
88       ;;
89     *)
90       APP="Jalview Local"
91       DMG=build/install4j/11/${APP// /_}-TEST-macos-java_11.dmg
92       ;;
93   esac
94 fi
95 if [ -z $INSTALLERVOL ]; then
96   INSTALLERVOL="${APP} Installer"
97 fi
98
99 if [ "${GRADLE}" = 1 ]; then
100   echo "Running: gradle ${CLEAN} installers -PCHANNEL="${CHANNEL}" -Pinstall4j_media_types="${MEDIA}" ${APPBASEOVERRIDEARG} -PJAVA_VERSION=${JAVA}"
101   gradle ${CLEAN} installers -PCHANNEL="${CHANNEL}" -Pinstall4j_media_types="${MEDIA}" ${APPBASEOVERRIDEARG} -PJAVA_VERSION=${JAVA}
102 else
103   echo "Not running gradle installers"
104 fi
105
106 if [ $? = 0 ]; then
107   if [ -e "/Volumes/$INSTALLERVOL" ]; then
108     hdiutil detach "/Volumes/$INSTALLERVOL"
109   fi
110   if [ -e "$DMG" ]; then
111     open $DMG
112   else
113     echo "No DMG file '$DMG'" 1>&2
114     exit 2
115   fi
116   echo "Mounting '$DMG' at /Volumes"
117   N=0
118   MOUNTEDAPP="/Volumes/$INSTALLERVOL/$APP.app"
119   echo "Waiting for '$MOUNTEDAPP' to appear"
120   while [ \! -e "$MOUNTEDAPP" ]; do
121     echo -n "."
122     N=$(( N+1 ))
123     if [ $N = 40 ]; then
124       echo ""
125       echo "Looks like something wrong with the DMG '$DMG'"
126       exit 4
127     fi
128     sleep 0.1
129   done
130   echo ""
131 else
132   echo "Problem with gradle build: exit code $?"
133   exit 3
134 fi
135
136 if [ -e "$MOUNTEDAPP" ]; then
137   echo "Removing '$APPLICATIONS/$APP.app'"
138   /bin/rm -r "$APPLICATIONS/$APP.app"
139   echo "Syncing '$MOUNTEDAPP' to '$APPLICATIONS/'"
140   rsync -avh "$MOUNTEDAPP" "$APPLICATIONS/"
141   echo "Unmounting '/Volumes/$INSTALLERVOL'"
142   hdiutil detach "/Volumes/$INSTALLERVOL"
143 fi