8
8
9
9
main () {
10
10
POSITIONAL_ARGS=()
11
- DOWNLOAD_ONLY=false
12
11
OUTPUT_DIR=.
13
12
while [ " $# " -gt 0 ]; do
14
13
case " $1 " in
15
14
-o|--output-dir)
16
- OUTPUT_DIR=" $( readlink -e " $2 " ) "
15
+ OUTPUT_DIR=" $( readlink -e " $2 " || exit 1 ) "
17
16
shift
18
17
shift
19
18
;;
@@ -23,76 +22,93 @@ main() {
23
22
;;
24
23
esac
25
24
done
26
- set -- " ${POSITIONAL_ARGS[@]} " # restore positional parameters
25
+ # restore positional parameters
26
+ set -- " ${POSITIONAL_ARGS[@]} "
27
27
28
28
OS=" $1 "
29
- jar =" $( ls server/build/* .jar | tail -n1) "
30
- release_name =" $( echo " ${jar % .* } " | sed ' s/.jar// ' | xargs basename) -$OS "
31
- release_version =" $( tmp=" ${jar % -* } " ; echo " ${tmp##* -} " | tr -d v) "
32
- # local release_revision_number ="$(tmp="${jar %.*}" && echo "${tmp##*-}" | tr -d r)"
33
- electron_version=" v14.0.0"
29
+ JAR =" $( ls server/build/* .jar | tail -n1) "
30
+ RELEASE_NAME =" $( echo " ${JAR % .* } " | xargs basename) -$OS "
31
+ RELEASE_VERSION =" $( tmp=" ${JAR % -* } " ; echo " ${tmp##* -} " | tr -d v) "
32
+ # RELEASE_REVISION_NUMBER ="$(tmp="${JAR %.*}" && echo "${tmp##*-}" | tr -d r)"
33
+ local electron_version=" v14.0.0"
34
34
35
35
# clean temporary directory on function return
36
- trap " rm -rf $release_name /" RETURN
37
- mkdir " $release_name /"
36
+ trap " rm -rf $RELEASE_NAME /" RETURN
37
+ mkdir " $RELEASE_NAME /"
38
38
39
39
case " $OS " in
40
40
debian-all)
41
+ RELEASE=" $RELEASE_NAME .deb"
41
42
make_deb_package
42
43
move_release_to_output_dir
43
44
;;
44
45
linux-all)
45
- make_linux_bundle
46
+ RELEASE=" $RELEASE_NAME .tar.gz"
47
+ cp " $JAR " " $RELEASE_NAME /tachidesk-server.jar"
48
+ copy_linux_package_assets_to " $RELEASE_NAME /"
49
+ tar -I " gzip -9" -cvf " $RELEASE " " $RELEASE_NAME /"
46
50
move_release_to_output_dir
47
51
;;
48
52
linux-x64)
49
- jre =" OpenJDK8U-jre_x64_linux_hotspot_8u302b08.tar.gz"
50
- jre_url =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$jre "
51
- electron =" electron-$electron_version -linux-x64.zip"
52
- electron_url =" https://github.com/electron/electron/releases/download/$electron_version /$electron "
53
+ JRE =" OpenJDK8U-jre_x64_linux_hotspot_8u302b08.tar.gz"
54
+ JRE_URL =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$JRE "
55
+ ELECTRON =" electron-$electron_version -linux-x64.zip"
56
+ ELECTRON_URL =" https://github.com/electron/electron/releases/download/$electron_version /$ELECTRON "
53
57
download_jre_and_electron
58
+
59
+ RELEASE=" $RELEASE_NAME .tar.gz"
54
60
make_linux_bundle
55
61
move_release_to_output_dir
56
62
;;
57
63
macOS-x64)
58
- jre =" OpenJDK8U-jre_x64_mac_hotspot_8u302b08.tar.gz"
59
- jre_url =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$jre "
60
- electron =" electron-$electron_version -darwin-x64.zip"
61
- electron_url =" https://github.com/electron/electron/releases/download/$electron_version /$electron "
64
+ JRE =" OpenJDK8U-jre_x64_mac_hotspot_8u302b08.tar.gz"
65
+ JRE_URL =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$JRE "
66
+ ELECTRON =" electron-$electron_version -darwin-x64.zip"
67
+ ELECTRON_URL =" https://github.com/electron/electron/releases/download/$electron_version /$ELECTRON "
62
68
download_jre_and_electron
69
+
70
+ RELEASE=" $RELEASE_NAME .zip"
63
71
make_macos_bundle
64
72
move_release_to_output_dir
65
73
;;
66
74
macOS-arm64)
67
- jre =" zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64.tar.gz"
68
- jre_url =" https://cdn.azul.com/zulu/bin/$jre "
69
- electron =" electron-$electron_version -darwin-arm64.zip"
70
- electron_url =" https://github.com/electron/electron/releases/download/$electron_version /$electron "
75
+ JRE =" zulu8.56.0.23-ca-jre8.0.302-macosx_aarch64.tar.gz"
76
+ JRE_URL =" https://cdn.azul.com/zulu/bin/$JRE "
77
+ ELECTRON =" electron-$electron_version -darwin-arm64.zip"
78
+ ELECTRON_URL =" https://github.com/electron/electron/releases/download/$electron_version /$ELECTRON "
71
79
download_jre_and_electron
80
+
81
+ RELEASE=" $RELEASE_NAME .zip"
72
82
make_macos_bundle
73
83
move_release_to_output_dir
74
84
;;
75
85
windows-x86)
76
- jre =" OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
77
- jre_url =" https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/$jre "
78
- electron =" electron-$electron_version -win32-ia32.zip"
79
- electron_url =" https://github.com/electron/electron/releases/download/$electron_version /$electron "
86
+ JRE =" OpenJDK8U-jre_x86-32_windows_hotspot_8u292b10.zip"
87
+ JRE_URL =" https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/$JRE "
88
+ ELECTRON =" electron-$electron_version -win32-ia32.zip"
89
+ ELECTRON_URL =" https://github.com/electron/electron/releases/download/$electron_version /$ELECTRON "
80
90
download_jre_and_electron
91
+
92
+ RELEASE=" $RELEASE_NAME .zip"
81
93
make_windows_bundle
82
94
move_release_to_output_dir
83
95
96
+ RELEASE=" $RELEASE_NAME .msi"
84
97
make_windows_package
85
98
move_release_to_output_dir
86
99
;;
87
100
windows-x64)
88
- jre =" OpenJDK8U-jre_x64_windows_hotspot_8u302b08.zip"
89
- jre_url =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$jre "
90
- electron =" electron-$electron_version -win32-x64.zip"
91
- electron_url =" https://github.com/electron/electron/releases/download/$electron_version /$electron "
101
+ JRE =" OpenJDK8U-jre_x64_windows_hotspot_8u302b08.zip"
102
+ JRE_URL =" https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/$JRE "
103
+ ELECTRON =" electron-$electron_version -win32-x64.zip"
104
+ ELECTRON_URL =" https://github.com/electron/electron/releases/download/$electron_version /$ELECTRON "
92
105
download_jre_and_electron
106
+
107
+ RELEASE=" $RELEASE_NAME .zip"
93
108
make_windows_bundle
94
109
move_release_to_output_dir
95
110
111
+ RELEASE=" $RELEASE_NAME .msi"
96
112
make_windows_package
97
113
move_release_to_output_dir
98
114
;;
@@ -104,86 +120,96 @@ main() {
104
120
105
121
move_release_to_output_dir () {
106
122
# clean up from possible previous runs
107
- if [ -f " $OUTPUT_DIR /$release " ]; then
108
- rm " $OUTPUT_DIR /$release "
123
+ if [ -f " $OUTPUT_DIR /$RELEASE " ]; then
124
+ rm " $OUTPUT_DIR /$RELEASE "
109
125
fi
110
- mv " $release " " $OUTPUT_DIR /"
126
+ mv " $RELEASE " " $OUTPUT_DIR /"
111
127
}
112
128
113
129
download_jre_and_electron () {
114
- if [ ! -f " $jre " ]; then
115
- curl -L " $jre_url " -o " $jre "
130
+ if [ ! -f " $JRE " ]; then
131
+ curl -L " $JRE_URL " -o " $JRE "
116
132
fi
117
- if [ ! -f " $electron " ]; then
118
- curl -L " $electron_url " -o " $electron "
133
+ if [ ! -f " $ELECTRON " ]; then
134
+ curl -L " $ELECTRON_URL " -o " $ELECTRON "
119
135
fi
120
136
121
- mkdir -p " $release_name /jre/"
122
- local ext=" ${jre##* .} "
137
+ mkdir -p " $RELEASE_NAME /jre/"
138
+ local ext=" ${JRE##* .} "
139
+ local jre_dir
123
140
if [ " $ext " = " zip" ]; then
124
- jre_dir=" $( unzip " $jre " | sed -n ' 2p' | cut -d: -f2 | xargs basename) "
125
- mv " $jre_dir " " $release_name /jre"
141
+ jre_dir=" $( unzip " $JRE " | sed -n ' 2p' | cut -d: -f2 | xargs basename) "
142
+ mv " $jre_dir " " $RELEASE_NAME /jre"
126
143
else
127
144
# --strip-components=1: untar an archive without the root folder
128
- tar xvf " $jre " --strip-components=1 -C " $release_name /jre/"
145
+ tar xvf " $JRE " --strip-components=1 -C " $RELEASE_NAME /jre/"
129
146
fi
130
- unzip " $electron " -d " $release_name /electron/"
147
+ unzip " $ELECTRON " -d " $RELEASE_NAME /electron/"
131
148
}
132
149
133
- make_linux_bundle () {
134
- cp " $jar " " $release_name /tachidesk-server.jar"
135
- cp " scripts/resources/tachidesk-server-browser-launcher.sh" " $release_name /"
136
- cp " scripts/resources/tachidesk-server-debug-launcher.sh" " $release_name /"
137
- cp " scripts/resources/tachidesk-server-electron-launcher.sh" " $release_name /"
138
- cp " scripts/resources/tachidesk-server.desktop" " $release_name /"
150
+ copy_linux_package_assets_to () {
151
+ local output_dir
152
+ output_dir=" $( readlink -e " $1 " || exit 1) "
153
+
154
+ cp " scripts/resources/tachidesk-server-browser-launcher.sh" " $output_dir /"
155
+ cp " scripts/resources/tachidesk-server-debug-launcher.sh" " $output_dir /"
156
+ cp " scripts/resources/tachidesk-server-electron-launcher.sh" " $output_dir /"
157
+ cp " scripts/resources/tachidesk-server.desktop" " $output_dir /"
158
+ cp " scripts/resources/systemd" /* " $output_dir /"
139
159
cp " server/src/main/resources/icon/faviconlogo.png" \
140
- " $release_name /tachidesk-server.png"
141
- cp " scripts/resources/systemd " / * " $release_name / "
160
+ " $output_dir /tachidesk-server.png"
161
+ }
142
162
143
- release=" $release_name .tar.gz"
144
- tar -I " gzip -9" -cvf " $release " " $release_name /"
163
+ make_linux_bundle () {
164
+ cp " $JAR " " $RELEASE_NAME /tachidesk-server.jar"
165
+ cp " scripts/resources/tachidesk-server-browser-launcher.sh" " $RELEASE_NAME /"
166
+ cp " scripts/resources/tachidesk-server-debug-launcher.sh" " $RELEASE_NAME /"
167
+ cp " scripts/resources/tachidesk-server-electron-launcher.sh" " $RELEASE_NAME /"
168
+
169
+ tar -I " gzip -9" -cvf " $RELEASE " " $RELEASE_NAME /"
145
170
}
146
171
147
172
make_macos_bundle () {
148
- cp " $jar " " $release_name /Tachidesk.jar"
149
- cp " scripts/resources/Tachidesk Browser Launcher.command" " $release_name /"
150
- cp " scripts/resources/Tachidesk Debug Launcher.command" " $release_name /"
151
- cp " scripts/resources/Tachidesk Electron Launcher.command" " $release_name /"
173
+ cp " $JAR " " $RELEASE_NAME /Tachidesk.jar"
174
+ cp " scripts/resources/Tachidesk Browser Launcher.command" " $RELEASE_NAME /"
175
+ cp " scripts/resources/Tachidesk Debug Launcher.command" " $RELEASE_NAME /"
176
+ cp " scripts/resources/Tachidesk Electron Launcher.command" " $RELEASE_NAME /"
152
177
153
- release=" $release_name .zip"
154
- zip -9 -r " $release " " $release_name /"
178
+ zip -9 -r " $RELEASE " " $RELEASE_NAME /"
155
179
}
156
180
157
181
# https://wiki.debian.org/SimplePackagingTutorial
158
182
# https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.pdf
159
183
make_deb_package () {
160
- make_linux_bundle " $release_name " " $jar "
161
- cp -r " scripts/resources/deb/" " $release_name /debian/"
162
- sed -i " s/\$ pkgver/$release_version /" " $release_name /debian/changelog"
163
- sed -i " s/\$ pkgrel/1/" " $release_name /debian/changelog"
164
-
165
- # clean temporary directory on function return
166
- local temp_dir=" $( mktemp -d) "
184
+ local temp_dir
185
+ temp_dir=" $( mktemp -d) "
167
186
trap " rm -rf $temp_dir " RETURN
168
187
169
- # behind $release_version is underscore "_"
170
- local source_dir=" tachidesk-server-$release_version "
171
- local upstream_source=" tachidesk-server_$release_version .orig.tar.gz"
172
- mv " $release_name /" " $temp_dir /$source_dir /"
173
- mv " $release_name .tar.gz" " $temp_dir /$upstream_source "
188
+ cp " $JAR " " $RELEASE_NAME /tachidesk-server.jar"
189
+ tar -I " gzip" -cvf " $RELEASE_NAME .tar.gz" " $RELEASE_NAME /"
190
+ # behind $RELEASE_VERSION is underscore "_"
191
+ local upstream_source=" tachidesk-server_$RELEASE_VERSION .orig.tar.gz"
192
+ mv " $RELEASE_NAME .tar.gz" " $temp_dir /$upstream_source "
193
+
194
+ cp -r " scripts/resources/deb/" " $RELEASE_NAME /debian/"
195
+ copy_linux_package_assets_to " $RELEASE_NAME /debian/"
196
+ sed -i " s/\$ pkgver/$RELEASE_VERSION /" " $RELEASE_NAME /debian/changelog"
197
+ sed -i " s/\$ pkgrel/1/" " $RELEASE_NAME /debian/changelog"
198
+ # behind $RELEASE_VERSION is hyphen "-"
199
+ local source_dir=" tachidesk-server-$RELEASE_VERSION "
200
+ mv " $RELEASE_NAME /" " $temp_dir /$source_dir /"
174
201
175
202
sudo apt install devscripts build-essential dh-exec
176
- cd " $temp_dir /$source_dir "
203
+ cd " $temp_dir /$source_dir / "
177
204
dpkg-buildpackage --no-sign --build=all
178
205
cd -
179
206
180
- local deb=" tachidesk-server_$release_version -1_all.deb"
181
- release=" $release_name .deb"
182
- mv " $temp_dir /$deb " " $release "
207
+ local deb=" tachidesk-server_$RELEASE_VERSION -1_all.deb"
208
+ mv " $temp_dir /$deb " " $RELEASE "
183
209
}
184
210
185
211
make_windows_bundle () {
186
- # # I'll disable this section until someone find a solution to this error:
212
+ # # I disabled this section until someone find a solution to this error:
187
213
# #E: Unable to correct problems, you have held broken packages.
188
214
# #./bundler.sh: line 250: wine: command not found
189
215
@@ -207,38 +233,36 @@ make_windows_bundle() {
207
233
# curl -L "$rcedit_url" -o "$rcedit"
208
234
# fi
209
235
210
- local icon=" server/src/main/resources/icon/faviconlogo.ico"
211
- # WINEARCH=win32 wine "$rcedit" "$release_name /electron/electron.exe" \
236
+ # local icon="server/src/main/resources/icon/faviconlogo.ico"
237
+ # WINEARCH=win32 wine "$rcedit" "$RELEASE_NAME /electron/electron.exe" \
212
238
# --set-icon "$icon"
213
239
214
- cp " $jar " " $release_name /Tachidesk.jar"
215
- cp " scripts/resources/Tachidesk Browser Launcher.bat" " $release_name "
216
- cp " scripts/resources/Tachidesk Debug Launcher.bat" " $release_name "
217
- cp " scripts/resources/Tachidesk Electron Launcher.bat" " $release_name "
240
+ cp " $JAR " " $RELEASE_NAME /Tachidesk.jar"
241
+ cp " scripts/resources/Tachidesk Browser Launcher.bat" " $RELEASE_NAME "
242
+ cp " scripts/resources/Tachidesk Debug Launcher.bat" " $RELEASE_NAME "
243
+ cp " scripts/resources/Tachidesk Electron Launcher.bat" " $RELEASE_NAME "
218
244
219
- release=" $release_name .zip"
220
- zip -9 -r " $release " " $release_name "
245
+ zip -9 -r " $RELEASE " " $RELEASE_NAME "
221
246
}
222
247
223
248
make_windows_package () {
224
249
if [ " $CI " = true ]; then
225
250
sudo apt install -y wixl
226
251
fi
227
252
228
- find " $release_name /jre" \
229
- | wixl-heat --var var.SourceDir -p " $release_name /" \
230
- --directory-ref jre --component-group jre > " $release_name /jre.wxs"
231
- find " $release_name /electron" \
232
- | wixl-heat --var var.SourceDir -p " $release_name /" \
233
- --directory-ref electron --component-group electron > " $release_name /electron.wxs"
253
+ find " $RELEASE_NAME /jre" \
254
+ | wixl-heat --var var.SourceDir -p " $RELEASE_NAME /" \
255
+ --directory-ref jre --component-group jre > " $RELEASE_NAME /jre.wxs"
256
+ find " $RELEASE_NAME /electron" \
257
+ | wixl-heat --var var.SourceDir -p " $RELEASE_NAME /" \
258
+ --directory-ref electron --component-group electron > " $RELEASE_NAME /electron.wxs"
234
259
235
260
local icon=" server/src/main/resources/icon/faviconlogo.ico"
236
261
local arch=${OS##* -}
237
- release=" $release_name .msi"
238
262
239
- wixl -D ProductVersion=" $release_version " -D SourceDir=" $release_name " \
263
+ wixl -D ProductVersion=" $RELEASE_VERSION " -D SourceDir=" $RELEASE_NAME " \
240
264
-D Icon=" $icon " --arch " $arch " " scripts/resources/msi/tachidesk-server-$arch .wxs" \
241
- " $release_name /jre.wxs" " $release_name /electron.wxs" -o " $release "
265
+ " $RELEASE_NAME /jre.wxs" " $RELEASE_NAME /electron.wxs" -o " $RELEASE "
242
266
}
243
267
244
268
# Error handler
@@ -252,17 +276,18 @@ make_windows_package() {
252
276
# and http://mywiki.wooledge.org/BashFAO/105
253
277
set -euo pipefail
254
278
error () {
255
- local parent_lineno=" $1 "
256
- local message=" $2 "
257
- local code=" ${3:- 1} "
258
- if [ -z " $message " ]; then
259
- echo " $0 : line $parent_lineno : exiting with status $code "
260
- else
261
- echo " $0 : line $parent_lineno : $message : exiting with status $code "
262
- fi
263
- exit " $code "
279
+ local parent_lineno=" $1 "
280
+ local message=" $2 "
281
+ local code=" ${3:- 1} "
282
+ if [ -z " $message " ]; then
283
+ echo " $0 : line $parent_lineno : exiting with status $code "
284
+ else
285
+ echo " $0 : line $parent_lineno : $message : exiting with status $code "
286
+ fi
287
+ exit " $code "
264
288
}
265
289
trap ' error $LINENO ""' ERR
266
290
267
291
main " $@ " ; exit
268
292
293
+
0 commit comments