1import chalk from 'chalk'; 2 3import { ExitError } from './error'; 4 5export function error(...message: string[]): void { 6 console.error(...message); 7} 8 9/** Print an error and provide additional info (the stack trace) in debug mode. */ 10export function exception(e: Error): void { 11 const { env } = require('./utils/env'); 12 error(chalk.red(e.toString()) + (env.EXPO_DEBUG ? '\n' + chalk.gray(e.stack) : '')); 13} 14 15export function log(...message: string[]): void { 16 console.log(...message); 17} 18 19/** Log a message and exit the current process. If the `code` is non-zero then `console.error` will be used instead of `console.log`. */ 20export function exit(message: string | Error, code: number = 1): never { 21 if (message instanceof Error) { 22 exception(message); 23 } else if (message) { 24 if (code === 0) { 25 log(message); 26 } else { 27 error(message); 28 } 29 } 30 31 if (code !== 0) { 32 throw new ExitError(message, code); 33 } 34 process.exit(code); 35} 36 37// The re-export makes auto importing easier. 38export const Log = { 39 error, 40 exception, 41 log, 42 exit, 43}; 44