xref: /expo/packages/@expo/cli/src/login/index.ts (revision dfd15ebd)
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