import { GraphQLError } from 'graphql' ; import * as path from 'path' ; export class ToolError extends Error { name : string = 'ToolError' ; constructor ( message ) { super ( message ) ; this . message = message ; } } const isRunningFromXcodeScript = process . env . XCODE_VERSION_ACTUAL ; export function logError ( error ) { if ( error instanceof ToolError ) { logErrorMessage ( error . message ) ; } else if ( error instanceof GraphQLError ) { const fileName = error . source && error . source . name ; if ( error . locations ) { for ( const location of error . locations ) { logErrorMessage ( error . message , fileName , location . line ) ; } } else { logErrorMessage ( error . message , fileName ) ; } } else { console . log ( error . stack ) ; } } export function logErrorMessage ( message , fileName ? , lineNumber ? ) { if ( isRunningFromXcodeScript ) { if ( fileName && lineNumber ) { console . log ( `${ fileName }:${ lineNumber }: error: ${ message }` ) ; } else { console . log ( `error: ${ message }` ) ; } } else { if ( fileName ) { const truncatedFileName = '/' + fileName . split ( path . sep ) . slice ( - 4 ) . join ( path . sep ) ; console . log ( `...${ truncatedFileName }: ${ message }` ) ; } else { console . log ( `error: ${ message }` ) ; } } }