#!/usr/bin/env bash set -euo pipefail ROOT=$(cd "$(dirname "$0")/.." && pwd) PACKAGE_SCRIPT="$ROOT/Scripts/package_app.sh" PLIST_SCRIPT=$(mktemp "${TMPDIR:-/tmp}/codexbar-package-info-plist-script.XXXXXX") TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/codexbar-package-info-plist.XXXXXX") trap 'rm -f "$PLIST_SCRIPT"; rm -rf "$TEMP_DIR"' EXIT python3 - "$PACKAGE_SCRIPT" "$PLIST_SCRIPT" <<'PY' import sys from pathlib import Path script = Path(sys.argv[1]).read_text() start = script.index('cat > "$APP/Contents/Info.plist" </dev/null 2>&1; then plutil -lint "$APP/Contents/Info.plist" fi python3 - "$APP/Contents/Info.plist" <<'PY' import plistlib import sys from pathlib import Path plist = plistlib.loads(Path(sys.argv[1]).read_bytes()) declarations = plist.get("UTExportedTypeDeclarations") assert declarations == [{ "UTTypeIdentifier": "com.steipete.codexbar.menu-layout-item", "UTTypeDescription": "CodexBar menu bar layout token", "UTTypeConformsTo": ["public.data"], "UTTypeTagSpecification": {}, }] PY echo "Package Info.plist tests passed."