← back to CelebritySignatures

apps/mobile/scripts/eas-submit-pty.exp

38 lines

#!/usr/bin/env expect
# Drive `eas submit` through a PTY so it can CREATE the App Store Connect app record
# (non-interactive submit refuses without a pre-existing ascAppId). ASC key env vars
# supply Apple auth (no 2FA). Auto-accepts the create-app defaults (name from app.json,
# SKU = bundle id, language en-US). Hard-aborts on any Apple-ID password / 2FA prompt.
set timeout 900
log_user 1

spawn npx eas-cli submit --platform ios --profile production --latest

expect {
    -re "(?i)(apple id:|password:|two-factor|verification code|6-digit|enter the code|sign in to your apple)" {
        puts "\n\n>>> ABORT: interactive Apple-ID/2FA requested — human step. <<<\n"; exit 3
    }
    -re "(?i)would you like to create.*app store connect|create a new app|app.*doesn't exist" {
        send "y\r"; exp_continue
    }
    -re "(?i)(name|language|sku|company|bundle id|reuse|would you like|do you want|select|choose|primary)" {
        # accept the shown default / highlighted option
        send "\r"; exp_continue
    }
    -re "\\\[Y/n\\\]|\\\(Y/n\\\)|\\\(y/N\\\)" {
        send "\r"; exp_continue
    }
    -re "(?i)error.*submit|submission failed" {
        puts "\n>>> SUBMIT ERROR <<<\n"; exp_continue
    }
    -re "(?i)(submitted your app|submission complete|View your submission|processed by app store|it can take)" {
        puts "\n>>> SUBMIT OK <<<\n"; exp_continue
    }
    timeout { puts "\n>>> TIMEOUT <<<\n"; exit 5 }
    eof {
        catch wait result
        set code [lindex $result 3]
        puts "\n>>> eas-cli submit exited: $code <<<\n"; exit $code
    }
}