← back to CelebritySignatures
auto-save: 2026-08-05T16:13:44 (2 files) — apps/mobile/app.json apps/mobile/scripts/eas-build-pty.exp
523098f979cc5f1d53586529863f7c1e64a430d2 · 2026-08-05 16:13:52 -0700 · Steve Abrams
Files touched
M apps/mobile/app.jsonA apps/mobile/scripts/eas-build-pty.exp
Diff
commit 523098f979cc5f1d53586529863f7c1e64a430d2
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Aug 5 16:13:52 2026 -0700
auto-save: 2026-08-05T16:13:44 (2 files) — apps/mobile/app.json apps/mobile/scripts/eas-build-pty.exp
---
apps/mobile/app.json | 5 +++-
apps/mobile/scripts/eas-build-pty.exp | 45 +++++++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/apps/mobile/app.json b/apps/mobile/app.json
index 548dac6..7fb671f 100644
--- a/apps/mobile/app.json
+++ b/apps/mobile/app.json
@@ -35,7 +35,10 @@
]
],
"extra": {
- "webBase": "https://celebsignatures.com"
+ "webBase": "https://celebsignatures.com",
+ "eas": {
+ "projectId": "0bbc81ed-d42a-4133-b6c6-01e69da22ead"
+ }
},
"owner": "agentabrams"
}
diff --git a/apps/mobile/scripts/eas-build-pty.exp b/apps/mobile/scripts/eas-build-pty.exp
new file mode 100644
index 0000000..95d2d82
--- /dev/null
+++ b/apps/mobile/scripts/eas-build-pty.exp
@@ -0,0 +1,45 @@
+#!/usr/bin/env expect
+# Drive the FIRST interactive EAS iOS production build through a real PTY so EAS
+# can generate + validate signing credentials using the ASC API key (env vars set
+# by the caller) WITHOUT a 2FA prompt. Auto-accepts y/n credential prompts; hard
+# aborts (exit 3) the instant it sees an Apple-ID password / 2FA / verification
+# prompt — that is the only thing a human must do, and we must not fake it.
+set timeout 600
+log_user 1
+
+spawn npx eas-cli build --platform ios --profile production --no-wait
+
+expect {
+ -re "(?i)(apple id|password:|two-factor|verification code|6-digit|sign in to your apple|enter the code)" {
+ puts "\n\n>>> ABORT: EAS is asking for interactive Apple-ID/2FA auth — a human step. <<<\n"
+ exit 3
+ }
+ -re "(?i)error\[: \].*credential" {
+ puts "\n>>> credential error <<<\n"; exit 4
+ }
+ -re "Build details: (https://\[^\r\n \]+)" {
+ puts "\n>>> BUILD QUEUED: $expect_out(1,string) <<<\n"; exit 0
+ }
+ -re "(?i)(waiting for build to complete|build queued|build in progress|is now building)" {
+ puts "\n>>> BUILD STARTED/QUEUED <<<\n"; exit 0
+ }
+ -re "\\\[Y/n\\\]|\\\(Y/n\\\)|\\? \\(y/N\\)|Reuse|reuse this|Generate a new|Would you like to|Do you want to" {
+ # Accept the default (Enter) for credential setup confirmations.
+ send "\r"
+ exp_continue
+ }
+ -re "(?i)(select|choose).*(certificate|profile|option)" {
+ # Accept the highlighted default in any selection list.
+ send "\r"
+ exp_continue
+ }
+ timeout {
+ puts "\n>>> TIMEOUT waiting on EAS <<<\n"; exit 5
+ }
+ eof {
+ catch wait result
+ set code [lindex $result 3]
+ puts "\n>>> eas-cli exited: $code <<<\n"
+ exit $code
+ }
+}
← a36745c iOS: wire eas.json submit to the team-wide ASC API key (reus
·
back to CelebritySignatures
·
iOS: EAS project link + headless first-build tooling + App S 7beb504 →