1#!/usr/bin/env node 2import { Command } from '../../bin/cli'; 3import { assertArgs, printHelp } from '../utils/args'; 4import { logCmdError } from '../utils/errors'; 5 6export const expoLogin: Command = async (argv) => { 7 const args = assertArgs( 8 { 9 // Types 10 '--help': Boolean, 11 '--username': String, 12 '--password': String, 13 '--otp': String, 14 // Aliases 15 '-h': '--help', 16 '-u': '--username', 17 '-p': '--password', 18 }, 19 argv 20 ); 21 22 if (args['--help']) { 23 printHelp( 24 `Log in to an Expo account`, 25 `npx expo login`, 26 [ 27 `-u, --username <string> Username`, 28 `-p, --password <string> Password`, 29 `--otp <string> One-time password from your 2FA device`, 30 `-h, --help Usage info`, 31 ].join('\n') 32 ); 33 } 34 35 const { showLoginPromptAsync } = await import('../api/user/actions'); 36 return showLoginPromptAsync({ 37 // Parsed options 38 username: args['--username'], 39 password: args['--password'], 40 otp: args['--otp'], 41 }).catch(logCmdError); 42}; 43