From 32db95ea85b9e5495da2ec10f7a828c4e10ec2d6 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Wed, 17 Jul 2019 18:10:13 -0700 Subject: [PATCH] MacOS .app Bundle * Add a shell script to generate a MacOS .app bundle for proper distribution. --- Makefile | 2 +- .../Project Doodle.app/Contents/Info.plist | 28 +++++++++++++++ .../Contents/Resources/icon.icns | Bin 0 -> 75416 bytes etc/macos/README.md | 13 +++++++ scripts/mac-app.sh | 32 ++++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 etc/macos/Project Doodle.app/Contents/Info.plist create mode 100644 etc/macos/Project Doodle.app/Contents/Resources/icon.icns create mode 100644 etc/macos/README.md create mode 100755 scripts/mac-app.sh diff --git a/Makefile b/Makefile index 5a3343f..ce1c02f 100644 --- a/Makefile +++ b/Makefile @@ -121,7 +121,7 @@ dist-free: doodads bindata build-free __dist-common __dist-common: mkdir -p dist/doodle-$(VERSION) cp bin/* dist/doodle-$(VERSION)/ - cp -r README.md "Open Source Licenses.md" dist/doodle-$(VERSION)/ + cp -r README.md Changes.md "Open Source Licenses.md" dist/doodle-$(VERSION)/ cd dist && tar -czvf doodle-$(VERSION).tar.gz doodle-$(VERSION) cd dist && zip -r doodle-$(VERSION).zip doodle-$(VERSION) diff --git a/etc/macos/Project Doodle.app/Contents/Info.plist b/etc/macos/Project Doodle.app/Contents/Info.plist new file mode 100644 index 0000000..f32e901 --- /dev/null +++ b/etc/macos/Project Doodle.app/Contents/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleGetInfoString + Project: Doodle + CFBundleExecutable + doodle + CFBundleIdentifier + net.kirsle.ProjectDoodle + CFBundleName + Doodle + CFBundleIconFile + icon.icns + CFBundleShortVersionString + 0.01 + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + IFMajorVersion + 0 + IFMinorVersion + 1 + NSHighResolutionCapable + NSSupportsAutomaticGraphicsSwitching + + diff --git a/etc/macos/Project Doodle.app/Contents/Resources/icon.icns b/etc/macos/Project Doodle.app/Contents/Resources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..8db1a5647348d388748965152d21687b5efea555 GIT binary patch literal 75416 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ξcWM*ypZ>WABy9Hu|h!mGMhnp@lJnDDTGp?VO! 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 CA3?qV literal 0 HcmV?d00001 diff --git a/etc/macos/README.md b/etc/macos/README.md new file mode 100644 index 0000000..3d79887 --- /dev/null +++ b/etc/macos/README.md @@ -0,0 +1,13 @@ +# Mac OS Configuration + +This directory contains a template `.app` folder for Mac OS. + +## Creating the ICNS Icon + +On Fedora: `dnf install libicns-utils`, Ubuntu `apt install icnsutils` + +Command: `png2icns icon.icns 16.png 32.png 128.png 256.png` + +Note, 48x48 is also a valid icon size but I didn't make one that size yet. + +https://dentrassi.de/2014/02/25/creating-mac-os-x-icons-icns-on-linux/ diff --git a/scripts/mac-app.sh b/scripts/mac-app.sh new file mode 100755 index 0000000..e9cc3b9 --- /dev/null +++ b/scripts/mac-app.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# mac-app: create Mac OS .app distribution. Run this script from the directory +# containing the doodad binaries (subdirectory of /dist from git repo root) + +VERSION=`grep -e 'Version =' ../../pkg/branding/branding.go | head -n 1 | cut -d '"' -f 2` +INSTALL_ROOT="/opt/project-doodle" +APP_NAME="Project Doodle.app" +APP_FOLDER="../../etc/macos/$APP_NAME" +APP_CONTENTS="$APP_NAME/Contents" + +if [[ ! -f "./doodle" ]]; then + echo Run this script from the directory containing the Doodle binary. + echo This is usually at /dist/doodle-VERSION/ relative to the git root. + exit 1 +fi + +if [[ ! -d "$APP_FOLDER" ]]; then + echo "Didn't find Mac .app template relative to current folder." + echo "I looked at $APP_FOLDER." + exit 1 +fi + +# Copy the Mac app template in to current folder. +echo Copying template app: $APP_FOLDER +cp -r "$APP_FOLDER" ./ +mkdir -p "$APP_CONTENTS/MacOS" +mkdir -p "$APP_CONTENTS/Resources" + +# Copy binaries to /MacOS +cp doodle doodad "$APP_CONTENTS/MacOS/" +cp *.* "$APP_CONTENTS/Resources/"