-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbuild_app.sh
More file actions
executable file
·99 lines (81 loc) · 2.52 KB
/
build_app.sh
File metadata and controls
executable file
·99 lines (81 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash
set -e
# Define version and paths
VERSION=2.03.10
JAVA_HOME=jdk-17
JAR_PATH=target/CoDaPack-${VERSION}-jar-with-dependencies.jar
YAML_PATH=codapack_structure.yaml
HELP_PATH=Help
RSCRIPTS_PATH=RScripts
ICON_PATH=src/main/resources/icons.icns
RLIBRARIES_PATH=Rlibraries
RFRAMEWORK_PATH=/Applications/CoDaPack.app/Contents/R_internal
# Clean previous build
rm -rf CoDaPack.app
# Create app structure
mkdir -p CoDaPack.app/Contents
CONTENTS=CoDaPack.app/Contents
# Create info.plist
cat << EOF > $CONTENTS/info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>CoDaPack</string>
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
<key>CFBundleName</key>
<string>CoDaPack</string>
<key>CFBundleVersion</key>
<string>${VERSION}</string>
<key>CFBundleIdentifier</key>
<string>com.coda.codaPack</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
</dict>
</plist>
EOF
# Copy JDK
mkdir -p $CONTENTS/Java
cp -a $JAVA_HOME/. $CONTENTS/Java/
# Copy application files
mkdir -p $CONTENTS/MacOS
cp $JAR_PATH $CONTENTS/MacOS/
cp $YAML_PATH $CONTENTS/MacOS/
rsync -av $RSCRIPTS_PATH/ $CONTENTS/MacOS/RScripts/
rsync -av $HELP_PATH/ $CONTENTS/MacOS/Help/
# Copy R.framework and R libraries
rsync -av $RFRAMEWORK_PATH/ $CONTENTS/R_internal/
rsync -av $RLIBRARIES_PATH/ $CONTENTS/Rlibraries/
# Create run.sh
cat << EOF > $CONTENTS/MacOS/CoDaPack
#!/bin/zsh
EXEDIR="\$(cd "\$(dirname "\$0")" && pwd)"
cd \$EXEDIR
export JAVA_HOME=../Java/
export R_HOME=/Applications/CoDaPack.app/Contents/R_internal/lib/R
export R_LIBS_USER="../Rlibraries"
export PATH=\$JAVA_HOME/bin:\$R_LIBS_USER/rJava/jri:/usr/local/bin:\$PATH
export DYLD_FALLBACK_LIBRARY_PATH=\$R_HOME/lib:\$R_LIBS_USER/rJava/jri
export CDP_WORKING_DIR=\$EXEDIR
export CDP_RESOURCES=.
export CDP_R_SCRIPTS=\$CDP_RESOURCES/RScripts/
# Check Rscript
if [ ! -x "\$R_HOME/bin/Rscript" ]; then
echo "Rscript not found in \$R_HOME/bin/"
exit 1
fi
exec java -Djava.library.path="\$R_LIBS_USER/rJava/jri" \\
-Xdock:name="CoDaPack" \\
-Xdock:icon="../Resources/AppIcon.icns" \\
-jar "CoDaPack-${VERSION}-jar-with-dependencies.jar"
EOF
chmod +x $CONTENTS/MacOS/CoDaPack
# Copy resources
mkdir -p $CONTENTS/Resources
cp $ICON_PATH $CONTENTS/Resources/AppIcon.icns
# Remove quarantine attributes
sudo xattr -cr CoDaPack.app
echo "CoDaPack.app structure created successfully."