Release v0.3
This commit is contained in:
@@ -3,15 +3,22 @@ set -euo pipefail
|
||||
|
||||
APP_NAME="I Hate PDFs"
|
||||
EXECUTABLE_NAME="IHatePDFs"
|
||||
APP_VERSION="${APP_VERSION:-0.2.0}"
|
||||
BUILD_NUMBER="${BUILD_NUMBER:-2}"
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
source "$ROOT_DIR/scripts/release-version.sh"
|
||||
CONFIGURATION="${CONFIGURATION:-release}"
|
||||
BUNDLE_ID="${BUNDLE_ID:-net.akkolli.ihatepdfs}"
|
||||
STRIP_RELEASE="${STRIP_RELEASE:-1}"
|
||||
SIGNING_IDENTITY="${SIGNING_IDENTITY:-}"
|
||||
ENTITLEMENTS_PATH="${ENTITLEMENTS_PATH:-}"
|
||||
PROVISIONING_PROFILE="${PROVISIONING_PROFILE:-}"
|
||||
CODESIGN_TIMESTAMP="${CODESIGN_TIMESTAMP:-1}"
|
||||
CODESIGN_OPTIONS="${CODESIGN_OPTIONS:-}"
|
||||
PLISTBUDDY="/usr/libexec/PlistBuddy"
|
||||
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"
|
||||
@@ -19,6 +26,29 @@ MACOS_DIR="$CONTENTS_DIR/MacOS"
|
||||
RESOURCES_DIR="$CONTENTS_DIR/Resources"
|
||||
ICON_SOURCE="$ROOT_DIR/ihatepdf.png"
|
||||
ICON_NAME="AppIcon"
|
||||
DERIVED_ENTITLEMENTS_PATH=""
|
||||
PROFILE_PLIST_PATH=""
|
||||
|
||||
cleanup() {
|
||||
if [[ -n "$DERIVED_ENTITLEMENTS_PATH" ]]; then
|
||||
rm -f "$DERIVED_ENTITLEMENTS_PATH"
|
||||
fi
|
||||
if [[ -n "$PROFILE_PLIST_PATH" ]]; then
|
||||
rm -f "$PROFILE_PLIST_PATH"
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
set_plist_string() {
|
||||
local plist="$1"
|
||||
local key="$2"
|
||||
local value="$3"
|
||||
|
||||
if "$PLISTBUDDY" -c "Set :$key $value" "$plist" >/dev/null 2>&1; then
|
||||
return
|
||||
fi
|
||||
"$PLISTBUDDY" -c "Add :$key string $value" "$plist"
|
||||
}
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
SWIFT_BUILD_ARGS=(-c "$CONFIGURATION")
|
||||
@@ -26,13 +56,26 @@ 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)"
|
||||
swift build "${SWIFT_BUILD_ARGS[@]}"
|
||||
|
||||
rm -rf "$APP_DIR"
|
||||
mkdir -p "$MACOS_DIR" "$RESOURCES_DIR"
|
||||
cp "$BUILD_DIR/$EXECUTABLE_NAME" "$MACOS_DIR/$EXECUTABLE_NAME"
|
||||
|
||||
if [[ "$CONFIGURATION" == "release" && "$STRIP_RELEASE" != "0" ]]; then
|
||||
strip -x "$MACOS_DIR/$EXECUTABLE_NAME"
|
||||
fi
|
||||
|
||||
if [[ -n "$PROVISIONING_PROFILE" ]]; then
|
||||
if [[ ! -f "$PROVISIONING_PROFILE" ]]; then
|
||||
echo "Missing provisioning profile: $PROVISIONING_PROFILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
cp "$PROVISIONING_PROFILE" "$CONTENTS_DIR/embedded.provisionprofile"
|
||||
xattr -cr "$CONTENTS_DIR/embedded.provisionprofile" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if [[ ! -f "$ICON_SOURCE" ]]; then
|
||||
echo "Missing app icon source: $ICON_SOURCE" >&2
|
||||
exit 1
|
||||
@@ -72,7 +115,7 @@ cat > "$CONTENTS_DIR/Info.plist" <<PLIST
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$EXECUTABLE_NAME</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.ihatepdfs.app</string>
|
||||
<string>$BUNDLE_ID</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -104,6 +147,8 @@ cat > "$CONTENTS_DIR/Info.plist" <<PLIST
|
||||
<string>$BUILD_NUMBER</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>13.0</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.productivity</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||
@@ -116,4 +161,51 @@ cat > "$CONTENTS_DIR/Info.plist" <<PLIST
|
||||
</plist>
|
||||
PLIST
|
||||
|
||||
if [[ -n "$SIGNING_IDENTITY" ]]; then
|
||||
if [[ -n "$ENTITLEMENTS_PATH" && ! -f "$ENTITLEMENTS_PATH" ]]; then
|
||||
echo "Missing entitlements file: $ENTITLEMENTS_PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_ENTITLEMENTS_PATH="$ENTITLEMENTS_PATH"
|
||||
if [[ -n "$PROVISIONING_PROFILE" ]]; then
|
||||
PROFILE_PLIST_PATH="$(mktemp "$DIST_DIR/profile.XXXXXX.plist")"
|
||||
security cms -D -i "$PROVISIONING_PROFILE" > "$PROFILE_PLIST_PATH"
|
||||
APP_IDENTIFIER="$("$PLISTBUDDY" -c "Print :Entitlements:com.apple.application-identifier" "$PROFILE_PLIST_PATH")"
|
||||
TEAM_IDENTIFIER="$("$PLISTBUDDY" -c "Print :Entitlements:com.apple.developer.team-identifier" "$PROFILE_PLIST_PATH")"
|
||||
|
||||
DERIVED_ENTITLEMENTS_PATH="$(mktemp "$DIST_DIR/entitlements.XXXXXX.plist")"
|
||||
if [[ -n "$ENTITLEMENTS_PATH" ]]; then
|
||||
cp "$ENTITLEMENTS_PATH" "$DERIVED_ENTITLEMENTS_PATH"
|
||||
else
|
||||
cat > "$DERIVED_ENTITLEMENTS_PATH" <<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/>
|
||||
</plist>
|
||||
PLIST
|
||||
fi
|
||||
|
||||
set_plist_string "$DERIVED_ENTITLEMENTS_PATH" "com.apple.application-identifier" "$APP_IDENTIFIER"
|
||||
set_plist_string "$DERIVED_ENTITLEMENTS_PATH" "com.apple.developer.team-identifier" "$TEAM_IDENTIFIER"
|
||||
APP_ENTITLEMENTS_PATH="$DERIVED_ENTITLEMENTS_PATH"
|
||||
fi
|
||||
|
||||
CODESIGN_ARGS=(--force --sign "$SIGNING_IDENTITY")
|
||||
if [[ "$CODESIGN_TIMESTAMP" != "0" ]]; then
|
||||
CODESIGN_ARGS+=(--timestamp)
|
||||
fi
|
||||
if [[ -n "$CODESIGN_OPTIONS" ]]; then
|
||||
CODESIGN_ARGS+=(--options "$CODESIGN_OPTIONS")
|
||||
fi
|
||||
if [[ -n "$APP_ENTITLEMENTS_PATH" ]]; then
|
||||
CODESIGN_ARGS+=(--entitlements "$APP_ENTITLEMENTS_PATH")
|
||||
fi
|
||||
|
||||
codesign "${CODESIGN_ARGS[@]}" "$APP_DIR"
|
||||
codesign --verify --strict --verbose=2 "$APP_DIR"
|
||||
fi
|
||||
|
||||
echo "Built $APP_DIR"
|
||||
du -sh "$APP_DIR" "$MACOS_DIR/$EXECUTABLE_NAME" "$RESOURCES_DIR/$ICON_NAME.icns"
|
||||
|
||||
Reference in New Issue
Block a user