80cb94d372303b35e7f46e4d27f9f6e7325921fc
[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   umount "/Volumes/$INSTALLERVOL"
108   if [ -e "$DMG" ]; then
109     open $DMG
110   else
111     echo "No DMG file '$DMG'" 1>&2
112     exit 2
113   fi
114   echo "Mounting '$DMG' at /Volumes"
115   N=0
116   MOUNTEDAPP="/Volumes/$INSTALLERVOL/$APP.app"
117   echo "Waiting for '$MOUNTEDAPP' to appear"
118   while [ \! -e "$MOUNTEDAPP" ]; do
119     if [ $(( N%1000 )) = 0 ]; then
120       echo -n "."
121     fi
122     N=$(( N+1 ))
123   done
124   echo ""
125 else
126   echo "Problem with gradle build: exit code $?"
127   exit 3
128 fi
129
130 if [ -e "$MOUNTEDAPP" ]; then
131   echo "Removing '$APPLICATIONS/$APP.app'"
132   /bin/rm -r "$APPLICATIONS/$APP.app"
133   echo "Syncing '$MOUNTEDAPP' to '$APPLICATIONS/'"
134   rsync -avh "$MOUNTEDAPP" "$APPLICATIONS/"
135   echo "Unmounting '/Volumes/$INSTALLERVOL'"
136   umount "/Volumes/$INSTALLERVOL"
137 fi