-
Notifications
You must be signed in to change notification settings - Fork 2
/
makeApp.sh
executable file
·64 lines (50 loc) · 1.64 KB
/
makeApp.sh
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
#!/bin/sh
# Usage:
# makeApp.sh <appname> <url> <iconurl>
#
# Examples:
# ./makeApp.sh Gmail https://gmail.com http://3.bp.blogspot.com/_rx1dHU9EQFY/THCcfaArRsI/AAAAAAAAB-k/-T1oLDCAEZg/s1600/gmail_logo_contact.png
# ./makeApp.sh Gmail file:///path/to/my/downloaded/icon
# The app name. Example "Gmail". No spaces.
name=$1
# The url.
url=$2
# The icon url. Can be whatever curl can download (http://, file://, ...)
iconUrl=$3
chromePath="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
appRoot="$HOME/Applications"
# various paths used when creating the app
resourcePath="$appRoot/$name.app/Contents/Resources"
execPath="$appRoot/$name.app/Contents/MacOS"
profilePath="$appRoot/$name.app/Contents/Profile"
plistPath="$appRoot/$name.app/Contents/Info.plist"
# make the directories
mkdir -p $resourcePath $execPath $profilePath
# Download the icon file
icon=/tmp/$RANDOM
curl $iconUrl > $icon
# convert the icon and copy into Resources
if [ -f $icon ] ; then
echo "Converting icon $icon"
sips -s format tiff $icon --out $resourcePath/icon.tiff --resampleWidth 128
tiff2icns -noLarge $resourcePath/icon.tiff >& /dev/null
fi
# create the executable
cat >$execPath/$name <<EOF
#!/bin/sh
exec $chromePath --app="$url" --user-data-dir="$profilePath" "\$@"
EOF
chmod +x $execPath/$name
# create the Info.plist
cat > $plistPath <<EOF
<?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>$name</string>
<key>CFBundleIconFile</key>
<string>icon</string>
</dict>
</plist>
EOF