120 lines
3.2 KiB
Bash
Executable File
120 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
APP_NAME="I Hate PDFs"
|
|
EXECUTABLE_NAME="IHatePDFs"
|
|
APP_VERSION="${APP_VERSION:-0.2.0}"
|
|
BUILD_NUMBER="${BUILD_NUMBER:-2}"
|
|
CONFIGURATION="${CONFIGURATION:-release}"
|
|
if [[ -z "${ARCHS+x}" && "$CONFIGURATION" == "release" ]]; then
|
|
ARCHS="arm64 x86_64"
|
|
else
|
|
ARCHS="${ARCHS:-}"
|
|
fi
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
DIST_DIR="$ROOT_DIR/dist"
|
|
APP_DIR="$DIST_DIR/$APP_NAME.app"
|
|
CONTENTS_DIR="$APP_DIR/Contents"
|
|
MACOS_DIR="$CONTENTS_DIR/MacOS"
|
|
RESOURCES_DIR="$CONTENTS_DIR/Resources"
|
|
ICON_SOURCE="$ROOT_DIR/ihatepdf.png"
|
|
ICON_NAME="AppIcon"
|
|
|
|
cd "$ROOT_DIR"
|
|
SWIFT_BUILD_ARGS=(-c "$CONFIGURATION")
|
|
for ARCH in $ARCHS; do
|
|
SWIFT_BUILD_ARGS+=(--arch "$ARCH")
|
|
done
|
|
|
|
swift build "${SWIFT_BUILD_ARGS[@]}"
|
|
BUILD_DIR="$(swift build "${SWIFT_BUILD_ARGS[@]}" --show-bin-path)"
|
|
|
|
rm -rf "$APP_DIR"
|
|
mkdir -p "$MACOS_DIR" "$RESOURCES_DIR"
|
|
cp "$BUILD_DIR/$EXECUTABLE_NAME" "$MACOS_DIR/$EXECUTABLE_NAME"
|
|
|
|
if [[ ! -f "$ICON_SOURCE" ]]; then
|
|
echo "Missing app icon source: $ICON_SOURCE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
ICONSET_DIR="$DIST_DIR/$ICON_NAME.iconset"
|
|
rm -rf "$ICONSET_DIR"
|
|
mkdir -p "$ICONSET_DIR"
|
|
|
|
make_icon() {
|
|
local pixels="$1"
|
|
local output="$2"
|
|
sips -s format png --resampleHeightWidth "$pixels" "$pixels" "$ICON_SOURCE" --out "$ICONSET_DIR/$output" >/dev/null
|
|
}
|
|
|
|
make_icon 16 "icon_16x16.png"
|
|
make_icon 32 "icon_16x16@2x.png"
|
|
make_icon 32 "icon_32x32.png"
|
|
make_icon 64 "icon_32x32@2x.png"
|
|
make_icon 128 "icon_128x128.png"
|
|
make_icon 256 "icon_128x128@2x.png"
|
|
make_icon 256 "icon_256x256.png"
|
|
make_icon 512 "icon_256x256@2x.png"
|
|
make_icon 512 "icon_512x512.png"
|
|
make_icon 1024 "icon_512x512@2x.png"
|
|
|
|
iconutil -c icns "$ICONSET_DIR" -o "$RESOURCES_DIR/$ICON_NAME.icns"
|
|
rm -rf "$ICONSET_DIR"
|
|
|
|
cat > "$CONTENTS_DIR/Info.plist" <<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>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>$EXECUTABLE_NAME</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>org.ihatepdfs.app</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>$APP_NAME</string>
|
|
<key>CFBundleDisplayName</key>
|
|
<string>$APP_NAME</string>
|
|
<key>CFBundleIconFile</key>
|
|
<string>$ICON_NAME</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>APPL</string>
|
|
<key>CFBundleDocumentTypes</key>
|
|
<array>
|
|
<dict>
|
|
<key>CFBundleTypeName</key>
|
|
<string>PDF Document</string>
|
|
<key>CFBundleTypeRole</key>
|
|
<string>Viewer</string>
|
|
<key>LSHandlerRank</key>
|
|
<string>Alternate</string>
|
|
<key>LSItemContentTypes</key>
|
|
<array>
|
|
<string>com.adobe.pdf</string>
|
|
</array>
|
|
</dict>
|
|
</array>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>$APP_VERSION</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>$BUILD_NUMBER</string>
|
|
<key>LSMinimumSystemVersion</key>
|
|
<string>13.0</string>
|
|
<key>NSHighResolutionCapable</key>
|
|
<true/>
|
|
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
|
<true/>
|
|
<key>LSSupportsOpeningDocumentsInPlace</key>
|
|
<true/>
|
|
<key>NSHumanReadableCopyright</key>
|
|
<string>MIT License</string>
|
|
</dict>
|
|
</plist>
|
|
PLIST
|
|
|
|
echo "Built $APP_DIR"
|