1import chalk from 'chalk'; 2 3import logger from '../../Logger'; 4import * as Npm from '../../Npm'; 5import { Task } from '../../TasksRunner'; 6import { TaskArgs } from '../types'; 7 8const { cyan } = chalk; 9 10/** 11 * Checks whether the environment allows to proceed with any further tasks. 12 */ 13export const checkEnvironmentTask = new Task<TaskArgs>( 14 { 15 name: 'checkEnvironmentTask', 16 required: true, 17 }, 18 async (): Promise<void | symbol> => { 19 const npmUser = await Npm.whoamiAsync(); 20 21 if (!npmUser) { 22 logger.error( 23 '❗️ You must be logged in to NPM to publish packages, please run `npm login` first' 24 ); 25 return Task.STOP; 26 } 27 28 const teamMembers = await Npm.getTeamMembersAsync(Npm.EXPO_DEVELOPERS_TEAM_NAME); 29 30 if (!teamMembers.includes(npmUser)) { 31 logger.error( 32 `❗️ You must be in ${cyan(Npm.EXPO_DEVELOPERS_TEAM_NAME)} team to publish packages` 33 ); 34 return Task.STOP; 35 } 36 } 37); 38