L'app se build sur le Mac en trois commandes, le toolchain restant dans le devShell du flake winnie (jamais installé sur le Mac) : cd ~/git/nixos && just mac # déploie ce setup winnie-sync # attrape ~/git/winnie depuis tower (rsync ssh) winnie-ios # simulateur ; npm ci + tauri ios init au besoin - modules/home-mac/winnie : winnie-doctor [--fix], winnie-sync [--delete], winnie-shell, winnie-front, winnie-macos, winnie-build-macos, winnie-ios, winnie-build-ios, winnie-verify. Scripts en writeShellApplication (shellcheck au build) ; scripts.nix est séparé du module pour être constructible depuis tower avec les pkgs linux et testable sans Mac. - profiles/macos : flakes + trusted-users dans nix.conf, et system.activationScripts.winnie-xcode (xcode-select -s, licence Xcode, -runFirstLaunch) pour que seule l'installation App Store reste manuelle. - Embarque aussi le setup SSH entrant du Mac (sshd, clé hermes@tower, tunnel inverse autossh) qui était déjà dans l'arbre de travail. Vérifié depuis tower : nix eval du darwinConfigurations.macos (toplevel et home-manager-generation) + build des scripts en x86_64-linux (shellcheck) et rsync de bout en bout depuis le dépôt de tower.
38 lines
1.4 KiB
Bash
38 lines
1.4 KiB
Bash
# App iOS en dev : simulateur (aucun compte Apple requis) ou iPhone branché.
|
|
# npm ci et `tauri ios init` (projet Xcode + pod install) sont faits au besoin,
|
|
# donc la toute première exécution est longue.
|
|
# winnie-ios premier iPhone du simulateur
|
|
# winnie-ios "iPhone 17 Pro" appareil précis, en argument positionnel
|
|
# WINNIE_IOS_DEVICE=<nom|udid> winnie-ios
|
|
# winnie-ios --force-ip-prompt sur le LAN (Vite sert déjà le LAN)
|
|
# `tauri ios dev` prend l'appareil en positionnel (le champ `device` de la CLI
|
|
# n'a pas d'attribut clap) et ouvre un menu interactif quand on ne passe rien :
|
|
# d'où la recherche du premier iPhone pour que la commande marche seule.
|
|
repo="$HOME/@REPO_REL@"
|
|
cd "$repo/app"
|
|
|
|
if [ ! -d node_modules ]; then
|
|
echo "[winnie-ios] npm ci"
|
|
npm ci
|
|
fi
|
|
|
|
if [ ! -d src-tauri/gen/apple ]; then
|
|
echo "[winnie-ios] tauri ios init (projet Xcode + pod install)"
|
|
./node_modules/.bin/tauri ios init
|
|
fi
|
|
|
|
args=("$@")
|
|
if [ "${#args[@]}" -eq 0 ] && [ -n "${WINNIE_IOS_DEVICE:-}" ]; then
|
|
args=("$WINNIE_IOS_DEVICE")
|
|
fi
|
|
|
|
if [ "${#args[@]}" -eq 0 ]; then
|
|
sim="$(xcrun simctl list devices available 2>/dev/null | awk -F ' \\(' '/^ *iPhone/ {sub(/^ */, "", $1); print $1; exit}' || true)"
|
|
if [ -n "$sim" ]; then
|
|
echo "[winnie-ios] simulateur : $sim"
|
|
args=("$sim")
|
|
fi
|
|
fi
|
|
|
|
exec ./node_modules/.bin/tauri ios dev "${args[@]}"
|