1e32ccf9fSEvan Baconimport { env } from '../utils/env'; 28d307f52SEvan Baconimport { CommandError } from '../utils/errors'; 329128565SEvan Baconimport { isInteractive } from '../utils/interactive'; 48d307f52SEvan Baconimport { learnMore } from '../utils/link'; 5*065a44f7SCedric van Puttenimport { openBrowserAsync } from '../utils/open'; 68d307f52SEvan Baconimport { ora } from '../utils/ora'; 78d307f52SEvan Bacon 88d307f52SEvan Baconexport async function registerAsync() { 929128565SEvan Bacon if (!isInteractive()) { 108d307f52SEvan Bacon throw new CommandError( 118d307f52SEvan Bacon 'NON_INTERACTIVE', 128d307f52SEvan Bacon `Cannot register an account in CI. Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore( 138d307f52SEvan Bacon 'https://docs.expo.dev/accounts/programmatic-access/' 148d307f52SEvan Bacon )})` 158d307f52SEvan Bacon ); 16e32ccf9fSEvan Bacon } else if (env.EXPO_OFFLINE) { 17e32ccf9fSEvan Bacon throw new CommandError('OFFLINE', `Cannot register an account in offline-mode`); 188d307f52SEvan Bacon } 198d307f52SEvan Bacon 208d307f52SEvan Bacon const registrationUrl = `https://expo.dev/signup`; 218d307f52SEvan Bacon const failedMessage = `Unable to open a web browser. Register an account at: ${registrationUrl}`; 228d307f52SEvan Bacon const spinner = ora(`Opening ${registrationUrl}`).start(); 238d307f52SEvan Bacon try { 248d307f52SEvan Bacon const opened = await openBrowserAsync(registrationUrl); 258d307f52SEvan Bacon 268d307f52SEvan Bacon if (opened) { 278d307f52SEvan Bacon spinner.succeed(`Opened ${registrationUrl}`); 288d307f52SEvan Bacon } else { 298d307f52SEvan Bacon spinner.fail(failedMessage); 308d307f52SEvan Bacon } 318d307f52SEvan Bacon } catch (error) { 328d307f52SEvan Bacon spinner.fail(failedMessage); 338d307f52SEvan Bacon throw error; 348d307f52SEvan Bacon } 358d307f52SEvan Bacon} 36