tv-anarchy/deploy.sh
Natalie 4a2ceb9781 feat(offline): inline star-to-keep and trash-to-cull on cache rows
Surface the existing pin (keep-from-cull) and per-file delete actions as
visible inline buttons on each offline cache row instead of context-menu-only:
a star toggles protection from auto-cull (and restore-if-missing), a trash
culls that file early. Aligns wording/icons to the star metaphor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 00:12:41 -04:00

58 lines
2.5 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# deploy.sh — the one command that updates every app this Mac can reach:
# 1. macOS: build-install.sh (Release → /Applications), then relaunch the app
# if it's running, so "deployed" means "running the new build".
# 2. iOS: build TVAnarchyiOS (Release, automatic signing) and install +
# launch it on the first available paired iPhone. Skipped with a
# note (not an error) when no phone is reachable — the mac install
# above has already happened.
set -euo pipefail
cd "$(dirname "$0")"
echo "══ macOS ══"
./build-install.sh
if pgrep -fq "TVAnarchy.app/Contents/MacOS"; then
echo "→ relaunching TVAnarchy"
osascript -e 'quit app "TVAnarchy"' || true
# Wait for the old instance to actually exit — `open` during the quit races
# LaunchServices into a -609 failure (seen in the wild, not hypothetical).
for _ in $(seq 1 20); do
pgrep -fq "TVAnarchy.app/Contents/MacOS" || break
sleep 0.5
done
open -a /Applications/TVAnarchy.app
fi
echo
echo "══ iOS ══"
# First paired-and-available iPhone's CoreDevice identifier (the UUID column).
udid=$(xcrun devicectl list devices 2>/dev/null \
| awk '/iPhone/ && /available/ { for (i = 1; i <= NF; i++)
if ($i ~ /^[0-9A-F]{8}-[0-9A-F]{4}-/) { print $i; exit } }')
if [ -z "$udid" ]; then
echo " no available paired iPhone; skipping (plug it in / same network, then re-run)"
exit 0
fi
APP=build/dd-ios/Build/Products/Release-iphoneos/TVAnarchyiOS.app
# A previous build's bundle must never be installable after a FAILED build —
# drop it first so the existence check below is meaningful (learned the hard way).
rm -rf "$APP"
echo "→ xcodebuild (Release, device)"
# pipefail (set above) carries xcodebuild's failure through the grep, aborting
# the script (set -e) before any install can happen.
xcodebuild -project TVAnarchy.xcodeproj -scheme TVAnarchyiOS -configuration Release \
-destination 'generic/platform=iOS' -derivedDataPath build/dd-ios \
-allowProvisioningUpdates build 2>&1 \
| grep -E "BUILD SUCCEEDED|BUILD FAILED|error:"
[ -d "$APP" ] || { echo "✗ iOS build produced no app at $APP" >&2; exit 1; }
echo "→ install on iPhone ($udid)"
xcrun devicectl device install app --device "$udid" "$APP" >/dev/null
echo "→ launch"
xcrun devicectl device process launch --device "$udid" local.lilith.TVAnarchyiOS >/dev/null 2>&1 \
|| echo " (launch failed — phone locked? the app IS installed; open it by hand)"
echo "✓ iPhone updated"