cmux/scripts/reloadp.sh

40 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
xcodebuild -project GhosttyTabs.xcodeproj -scheme cmux -configuration Release -destination 'platform=macOS' build
pkill -x cmux || true
sleep 0.2
APP_PATH="$(
find "$HOME/Library/Developer/Xcode/DerivedData" -path "*/Build/Products/Release/cmux.app" -print0 \
| xargs -0 /usr/bin/stat -f "%m %N" 2>/dev/null \
| sort -nr \
| head -n 1 \
| cut -d' ' -f2-
)"
if [[ -z "${APP_PATH}" ]]; then
echo "cmux.app not found in DerivedData" >&2
exit 1
fi
echo "Release app:"
echo " ${APP_PATH}"
# Dev shells (including CI/Codex) often force-disable paging by exporting these.
# Don't leak that into cmux, otherwise `git diff` won't page even with PAGER=less.
env -u GIT_PAGER -u GH_PAGER open -g "$APP_PATH"
APP_PROCESS_PATH="${APP_PATH}/Contents/MacOS/cmux"
ATTEMPT=0
MAX_ATTEMPTS=20
while [[ "$ATTEMPT" -lt "$MAX_ATTEMPTS" ]]; do
if pgrep -f "$APP_PROCESS_PATH" >/dev/null 2>&1; then
echo "Release launch status:"
echo " running: ${APP_PROCESS_PATH}"
exit 0
fi
ATTEMPT=$((ATTEMPT + 1))
sleep 0.25
done
echo "warning: Release app launch was requested, but no running process was observed for:" >&2
echo " ${APP_PROCESS_PATH}" >&2