feat(dev): add 'magic' subcommand to dev.sh for RebreakMagic macOS app
./dev.sh magic - xcodegen + xcodebuild Release + relaunch ./dev.sh magic --debug - Debug-Config ./dev.sh magic --xcode - Only generate project + open Xcode ./dev.sh magic --no-build - Skip build, just relaunch ./dev.sh magic --no-launch - Build only Auto-checks for ~/.config/rebreak-magic/config.json and points to template if missing. Pre-kills any running RebreakMagic instance before launch.
This commit is contained in:
parent
c16b0f2260
commit
138e45fe0a
@ -11,6 +11,7 @@
|
|||||||
# ./dev.sh clean iOS: Nuclear clean (Pods, DerivedData, Archives)
|
# ./dev.sh clean iOS: Nuclear clean (Pods, DerivedData, Archives)
|
||||||
# ./dev.sh install ios Build Release + Install auf iPhone USB
|
# ./dev.sh install ios Build Release + Install auf iPhone USB
|
||||||
# ./dev.sh install android Build Debug APK + Install auf Android Device
|
# ./dev.sh install android Build Debug APK + Install auf Android Device
|
||||||
|
# ./dev.sh magic Build + Launch RebreakMagic.app (macOS Wizard)
|
||||||
#
|
#
|
||||||
# FLAGS (ios):
|
# FLAGS (ios):
|
||||||
# --device Build auf physisches iPhone via USB (DEFAULT)
|
# --device Build auf physisches iPhone via USB (DEFAULT)
|
||||||
@ -33,6 +34,12 @@
|
|||||||
# --build + iOS build am Ende
|
# --build + iOS build am Ende
|
||||||
# --xcode + Xcode öffnen am Ende
|
# --xcode + Xcode öffnen am Ende
|
||||||
#
|
#
|
||||||
|
# FLAGS (magic):
|
||||||
|
# --no-build Nur launchen (App muss schon gebaut sein)
|
||||||
|
# --xcode Nur Xcode-Projekt generieren + öffnen
|
||||||
|
# --debug Debug-Konfiguration statt Release
|
||||||
|
# --no-launch Build, aber App nicht öffnen
|
||||||
|
#
|
||||||
# BEISPIELE:
|
# BEISPIELE:
|
||||||
# # Default: iPhone USB + Native-Build:
|
# # Default: iPhone USB + Native-Build:
|
||||||
# ./dev.sh
|
# ./dev.sh
|
||||||
@ -61,6 +68,7 @@ set -euo pipefail
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
IOS_DIR="$SCRIPT_DIR/ios"
|
IOS_DIR="$SCRIPT_DIR/ios"
|
||||||
ANDROID_DIR="$SCRIPT_DIR/android"
|
ANDROID_DIR="$SCRIPT_DIR/android"
|
||||||
|
MAGIC_DIR="$SCRIPT_DIR/../rebreak-magic-mac"
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
# Color Output
|
# Color Output
|
||||||
@ -421,6 +429,79 @@ cmd_install_android() {
|
|||||||
ok "Fertig"
|
ok "Fertig"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd_magic() {
|
||||||
|
local BUILD=true
|
||||||
|
local LAUNCH=true
|
||||||
|
local XCODE_ONLY=false
|
||||||
|
local CONFIGURATION="Release"
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--no-build) BUILD=false; shift ;;
|
||||||
|
--no-launch) LAUNCH=false; shift ;;
|
||||||
|
--xcode) XCODE_ONLY=true; shift ;;
|
||||||
|
--debug) CONFIGURATION="Debug"; shift ;;
|
||||||
|
*) die "Unbekannter Flag für 'magic': $1" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
section "RebreakMagic (macOS Wizard)"
|
||||||
|
|
||||||
|
[[ -d "$MAGIC_DIR" ]] || die "rebreak-magic-mac nicht gefunden: $MAGIC_DIR"
|
||||||
|
command -v xcodebuild >/dev/null 2>&1 || die "xcodebuild fehlt — xcode-select --install"
|
||||||
|
|
||||||
|
cd "$MAGIC_DIR"
|
||||||
|
|
||||||
|
# Xcode-Projekt aus project.yml generieren (idempotent)
|
||||||
|
if command -v xcodegen >/dev/null 2>&1; then
|
||||||
|
log "xcodegen generate"
|
||||||
|
xcodegen generate >/dev/null
|
||||||
|
else
|
||||||
|
warn "xcodegen nicht installiert — überspringe project-regeneration (brew install xcodegen)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $XCODE_ONLY; then
|
||||||
|
log "Opening Xcode..."
|
||||||
|
open -a Xcode "$MAGIC_DIR/RebreakMagic.xcodeproj"
|
||||||
|
ok "Xcode geöffnet — Cmd+R für Build & Run"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local BUILD_DIR="$MAGIC_DIR/build"
|
||||||
|
local APP_PATH="$BUILD_DIR/Build/Products/$CONFIGURATION/RebreakMagic.app"
|
||||||
|
|
||||||
|
if $BUILD; then
|
||||||
|
log "xcodebuild ($CONFIGURATION)"
|
||||||
|
xcodebuild \
|
||||||
|
-project RebreakMagic.xcodeproj \
|
||||||
|
-scheme RebreakMagic \
|
||||||
|
-configuration "$CONFIGURATION" \
|
||||||
|
-derivedDataPath "$BUILD_DIR" \
|
||||||
|
build | tail -20
|
||||||
|
[[ -d "$APP_PATH" ]] || die "Build fehlgeschlagen — $APP_PATH nicht gefunden"
|
||||||
|
ok "Build erfolgreich: $APP_PATH"
|
||||||
|
else
|
||||||
|
[[ -d "$APP_PATH" ]] || die "App nicht vorhanden ($APP_PATH) — ohne --no-build neu starten"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Config-Check
|
||||||
|
local CONFIG_FILE="$HOME/.config/rebreak-magic/config.json"
|
||||||
|
if [[ ! -f "$CONFIG_FILE" ]]; then
|
||||||
|
warn "Config fehlt: $CONFIG_FILE"
|
||||||
|
echo " → Template kopieren: cp $MAGIC_DIR/config.example.json $CONFIG_FILE"
|
||||||
|
echo " → Dann editieren: backendBaseUrl=https://staging.rebreak.org"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $LAUNCH; then
|
||||||
|
log "Killing running RebreakMagic instance..."
|
||||||
|
pkill -x RebreakMagic 2>/dev/null || true
|
||||||
|
sleep 0.5
|
||||||
|
log "Launching $APP_PATH"
|
||||||
|
open "$APP_PATH"
|
||||||
|
ok "RebreakMagic gestartet"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
# Main
|
# Main
|
||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
@ -459,6 +540,10 @@ case "$COMMAND" in
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
magic)
|
||||||
|
cmd_magic "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
-h|--help)
|
-h|--help)
|
||||||
awk '/^#!/{next} /^#/{sub(/^# ?/, ""); print; next} {exit}' "$0"
|
awk '/^#!/{next} /^#/{sub(/^# ?/, ""); print; next} {exit}' "$0"
|
||||||
exit 0
|
exit 0
|
||||||
@ -474,8 +559,10 @@ case "$COMMAND" in
|
|||||||
echo " clean iOS Nuclear Clean"
|
echo " clean iOS Nuclear Clean"
|
||||||
echo " install ios Release-Build auf iPhone installieren"
|
echo " install ios Release-Build auf iPhone installieren"
|
||||||
echo " install android Debug-APK auf Android installieren"
|
echo " install android Debug-APK auf Android installieren"
|
||||||
|
echo " magic Build + Launch RebreakMagic.app (macOS)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Nutze --help für Details"
|
echo "Nutze --help für Details"
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user