Skip to content

Instantly share code, notes, and snippets.

@maz-1
Forked from subtleGradient/appify
Last active February 17, 2017 10:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maz-1/5590b7f7c363681db4e6bc0cb8890aa4 to your computer and use it in GitHub Desktop.
Save maz-1/5590b7f7c363681db4e6bc0cb8890aa4 to your computer and use it in GitHub Desktop.
appify. Create the simplest possible mac app from a shell script
#!/bin/bash
if [ "$1" = "-h" -o "$1" = "--help" -o -z "$1" ]; then cat <<EOF
appify v3.0.1 for Mac OS X - http://mths.be/appify
Creates the simplest possible Mac app from a shell script.
Appify takes a shell script as its first argument:
`basename "$0"` my-script.sh
Note that you cannot rename appified apps. If you want to give your app
a custom name, use the second argument:
`basename "$0"` my-script.sh "My App"
Copyright (c) Thomas Aylott <http://subtlegradient.com/>
Modified by Mathias Bynens <http://mathiasbynens.be/>
EOF
exit; fi
APPNAME=${2:-$(basename "$1" ".sh")}
BINDIR="$APPNAME.app/Contents/MacOS"
RESDIR="$APPNAME.app/Contents/Resources"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$BINDIR"
mkdir -p "$RESDIR"
cp "$1" "$BINDIR/$APPNAME"
chmod +x "$BINDIR/$APPNAME"
cp -n /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/Resources/applet.icns "$RESDIR/$APPNAME.icns"
echo "<?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>$APPNAME</string>
<key>CFBundleIconFile</key>
<string>$APPNAME</string>
<key>CFBundleIdentifier</key>
<string>com.applify.$USER.$APPNAME</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
</dict>
</plist>
" > "$APPNAME.app/Contents/Info.plist"
echo "$PWD/$APPNAME.app"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment