← back to Homesonspec
apps/mobile/scripts/build-ios-prod.exp
37 lines
#!/usr/bin/expect -f
# Drive `eas build --platform ios --profile production` through a pseudo-terminal
# so the FIRST-TIME iOS signing-credential prompts (which eas refuses to answer in
# non-interactive / `!`-piped mode) get answered. Accepts EAS's safe defaults:
# reuse the existing team Distribution Certificate, EAS-managed provisioning profile,
# EAS-managed APNs key (the alerts feature needs push). Cookie-backed Apple auth =
# no password/2FA (same as device-create.exp). --no-wait: queue + return the URL.
#
# Usage: expect build-ios-prod.exp (run from apps/mobile)
set timeout 900
log_user 1
set ::env(EAS_BUILD_NO_EXPO_GO_WARNING) "true"
spawn npx eas-cli build --platform ios --profile production --no-wait
expect {
-re "Would you like to use" { sleep 1; send "\r"; exp_continue }
-re "log in to your Apple" { sleep 1; send "\r"; exp_continue }
-re "Apple ID:" { sleep 1; send "\r"; exp_continue }
-re "Distribution Certificate" { sleep 1; send "\r"; exp_continue }
-re "[Pp]rovisioning [Pp]rofile" { sleep 1; send "\r"; exp_continue }
-re "Push Notifications|APNs|Apple Push" { sleep 1; send "\r"; exp_continue }
-re "Would you like to set up" { sleep 1; send "\r"; exp_continue }
-re "\\(Y/n\\)|\\(y/N\\)" { sleep 1; send "\r"; exp_continue }
# Terminal states — stop looping once the build is queued or an error prints.
-re "Build details:.*https://expo.dev\\S+" { }
-re "https://expo.dev/accounts/\\S+/builds/\\S+" { }
-re "Waiting for build" { }
-re "Error:" { }
timeout { }
eof { }
}
sleep 2
catch { send "\003" }
expect eof