Skip to content

Commit 6e925e2

Browse files
committed
Add macOS options to release script
1 parent a49a441 commit 6e925e2

File tree

1 file changed

+83
-13
lines changed

1 file changed

+83
-13
lines changed

docs/releases/create_release.sh

Lines changed: 83 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,30 @@ IFS=$'\n\t'
1010

1111
version="${1:-}"
1212
platform="${2:-}"
13+
app_mode="${3:-}"
1314
root_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

1729
if [ -z "${version}" -o -z "${platform}" ]; then
18-
echo "usage: $(basename $0) version platform"
19-
exit 1
30+
usage
2031
fi
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
2437
fi
2538

2639
spaces_regex="[[:space:]]+"
@@ -32,6 +45,10 @@ if [[ "${platform}" =~ $spaces_regex ]]; then
3245
echo "ERROR: platform shouldn't contain spaces"
3346
exit 1
3447
fi
48+
if [[ "${app_mode}" =~ $spaces_regex ]]; then
49+
echo "ERROR: app_mode shouldn't contain spaces"
50+
exit 1
51+
fi
3552

3653
if [ "${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
4360
fi
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

4566
if [ "${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
5273
fi
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

5479
echo "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"
106131
fi
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
123189
fi
124190
echo " done"
125191

126192
# Remove unnecessary files from version dir
127193

128194
echo -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
131201
if [ -d releases/${version}/${working_dir}/data/campaign/ ]; then
132202
rm -r releases/${version}/${working_dir}/data/campaign/
133203
fi

0 commit comments

Comments
 (0)