@@ -10,17 +10,30 @@ IFS=$'\n\t'
1010
1111version=" ${1:- } "
1212platform=" ${2:- } "
13+ app_mode=" ${3:- } "
1314root_dir=" ../.."
15+ working_dir=" "
16+ working_subdir=" "
17+
18+ usage () {
19+ echo " usage: $( basename $0 ) version platform [app_mode]"
20+ echo " Creates a dungeoneering release"
21+ echo " version should be vX.Y.Z"
22+ echo " platform should be windows, linux, or macos"
23+ echo " app_mode is used only in macOS and should be standalone, dm, or players"
24+ exit 1
25+ }
1426
1527# Check if we have everything we need
1628
1729if [ -z " ${version} " -o -z " ${platform} " ]; then
18- echo " usage: $( basename $0 ) version platform"
19- exit 1
30+ usage
2031fi
21- if [ " ${platform} " != " windows" -a " ${platform} " != " linux" ]; then
22- echo " usage: $( basename $0 ) version platform"
23- exit 1
32+ if [ " ${platform} " != " windows" -a " ${platform} " != " linux" -a " ${platform} " != " macos" ]; then
33+ usage
34+ fi
35+ if [ -n " ${app_mode} " -a " ${app_mode} " != " standalone" -a " ${app_mode} " != " dm" -a " ${app_mode} " != " players" ]; then
36+ usage
2437fi
2538
2639spaces_regex=" [[:space:]]+"
@@ -32,6 +45,10 @@ if [[ "${platform}" =~ $spaces_regex ]]; then
3245 echo " ERROR: platform shouldn't contain spaces"
3346 exit 1
3447fi
48+ if [[ " ${app_mode} " =~ $spaces_regex ]]; then
49+ echo " ERROR: app_mode shouldn't contain spaces"
50+ exit 1
51+ fi
3552
3653if [ " ${platform} " == " windows" -a ! -d " ${root_dir} /dungeoneering/application.windows64/" ]; then
3754 echo " ERROR: dir application.windows64 not found"
@@ -41,6 +58,10 @@ if [ "${platform}" == "linux" -a ! -d "${root_dir}/dungeoneering/application.lin
4158 echo " ERROR: dir application.linux64 not found"
4259 exit 1
4360fi
61+ if [ " ${platform} " == " macos" -a ! -d " ${root_dir} /dungeoneering/application.macosx/" ]; then
62+ echo " ERROR: dir application.macosx not found"
63+ exit 1
64+ fi
4465
4566if [ " ${platform} " == " windows" -a -d " ${root_dir} /releases/${version} /dungeoneering-windows64/" ]; then
4667 echo " ERROR: dir dungeoneering-windows64 already exists"
@@ -50,6 +71,10 @@ if [ "${platform}" == "linux" -a -d "${root_dir}/releases/${version}/dungeoneeri
5071 echo " ERROR: dir dungeoneering-linux64 already exists"
5172 exit 1
5273fi
74+ if [ " ${platform} " == " macos" -a " ${app_mode} " == " standalone" -a -d " ${root_dir} /releases/${version} /dungeoneering-macos/" ]; then
75+ echo " ERROR: dir dungeoneering-macos already exists"
76+ exit 1
77+ fi
5378
5479echo " Creating release dungeoneering-${platform} 64.zip..."
5580
@@ -104,6 +129,24 @@ if [ "${platform}" == "linux" ]; then
104129 mv dungeoneering/application.linux64 releases/${version} /${working_dir}
105130 echo " done"
106131fi
132+ if [ " ${platform} " == " macos" ]; then
133+ working_dir=dungeoneering-macos
134+ if [ " ${app_mode} " == " standalone" ]; then
135+ working_subdir=dungeoneering.app
136+ elif [ " ${app_mode} " == " dm" ]; then
137+ working_subdir=dungeoneeringDm.app
138+ elif [ " ${app_mode} " == " players" ]; then
139+ working_subdir=dungeoneeringPlayers.app
140+ fi
141+ echo -n " Move application.macosx to ${working_dir} ..."
142+ mkdir -p releases/${version} /${working_dir}
143+ mv dungeoneering/application.macosx/dungeoneering* releases/${version} /${working_dir} /
144+ if [ ! -d releases/${version} /${working_dir} /source ]; then
145+ mv dungeoneering/application.macosx/source releases/${version} /${working_dir} /
146+ fi
147+ rm -r dungeoneering/application.macosx
148+ echo " done"
149+ fi
107150
108151# Copy release files to version dir
109152
@@ -114,20 +157,47 @@ echo " done"
114157
115158# Copy libraries to lib dir and then remove platform specific files
116159
117- echo -n " Copy libraries to ${working_dir} /lib..."
118- cp -r dungeoneering/code/* releases/${version} /${working_dir} /lib
119- rm -r releases/${version} /${working_dir} /lib/macosx64/
120- rm -r releases/${version} /${working_dir} /lib/windows32/
121- if [ " ${platform} " == " linux" ]; then
122- rm -r releases/${version} /${working_dir} /lib/windows64/
160+ echo -n " Copy libraries to ${working_dir} lib or Java dir..."
161+ if [ " ${platform} " == " windows" -o " ${platform} " == " linux" ]; then
162+ cp -r dungeoneering/code/* releases/${version} /${working_dir} /lib
163+ rm -r releases/${version} /${working_dir} /lib/macosx64/
164+ rm -r releases/${version} /${working_dir} /lib/windows32/
165+ if [ " ${platform} " == " linux" ]; then
166+ rm -r releases/${version} /${working_dir} /lib/windows64/
167+ fi
168+ fi
169+ if [ " ${platform} " == " macos" ]; then
170+ gcp -r dungeoneering/code/* releases/${version} /${working_dir} /${working_subdir} /Contents/Java/
171+ rm -r releases/${version} /${working_dir} /${working_subdir} /Contents/Java/windows32/
172+ rm -r releases/${version} /${working_dir} /${working_subdir} /Contents/Java/windows64/
173+ fi
174+ echo " done"
175+
176+ # In macOS only, copy data to working dir
177+
178+ if [ " ${platform} " == " macos" ]; then
179+ if [ ! -d releases/${version} /${working_dir} /data ]; then
180+ echo -n " Copy data to ${working_dir} ..."
181+ gcp -r dungeoneering/data releases/${version} /${working_dir} /
182+ rm -r releases/${version} /${working_dir} /data/conditions/
183+ rm -r releases/${version} /${working_dir} /data/cursors/
184+ rm -r releases/${version} /${working_dir} /data/fonts/
185+ rm -r releases/${version} /${working_dir} /data/icons/
186+ else
187+ echo -n " Skipping copy of data to ${working_dir} - already present..."
188+ fi
123189fi
124190echo " done"
125191
126192# Remove unnecessary files from version dir
127193
128194echo -n " Remove unnecessary files from ${working_dir} ..."
129- rm releases/${version} /${working_dir} /source/dungeoneering.java
130- rm -r releases/${version} /${working_dir} /data/icons/orig/
195+ if [ -f releases/${version} /${working_dir} /source/dungeoneering.java ]; then
196+ rm releases/${version} /${working_dir} /source/dungeoneering.java
197+ fi
198+ if [ -d releases/${version} /${working_dir} /data/icons/orig/ ]; then
199+ rm -r releases/${version} /${working_dir} /data/icons/orig/
200+ fi
131201if [ -d releases/${version} /${working_dir} /data/campaign/ ]; then
132202 rm -r releases/${version} /${working_dir} /data/campaign/
133203fi
0 commit comments