/**
 * The main entry point for cross-platform build scripts.
 * Usage (in repository root directory):
 *   ts-node -P ./scripts ./scripts [step1] [step2 ... stepN]
 * Alias for above:
 *   npm run script [step1] [step2 ... stepN]
 */ const [ , , ... steps ] = process . argv ; const { TRACE_TEST_EXCLUDE_INTEGRATION } = process . env ; import { getPluginTypes } from './get-plugin-types' ; import { initTestFixtures } from './init-test-fixtures' ; import { runTests } from './run-tests' ; import { BUILD_DIRECTORY , spawnP } from './utils' ; import * as os from 'os' ; const isWin = os . platform ( ) . startsWith ( 'win' ) ; const unitTestExcludeGlobs = TRACE_TEST_EXCLUDE_INTEGRATION ? [ `${ BUILD_DIRECTORY }/test/plugins/test-*` , `${ BUILD_DIRECTORY }/test/test-agent-stopped.js` , `${ BUILD_DIRECTORY }/test/test-grpc-async-handler.js` , `${ BUILD_DIRECTORY }/test/test-grpc-context.js` , `${ BUILD_DIRECTORY }/test/test-mysql-pool.js` , `${ BUILD_DIRECTORY }/test/test-plugins-*` , `${ BUILD_DIRECTORY }/test/test-trace-hapi-tails.js` , `${ BUILD_DIRECTORY }/test/test-trace-web-frameworks.js` , `${ BUILD_DIRECTORY }/test/test-unpatch.js` , ] : [ ] ; /**
 * Sequentially runs a list of commands.
 */ async function run ( steps ) { for ( const step of steps ) { console . log ( `> Running step: ${ step }` ) ; if ( step . indexOf ( 'npm-' ) === 0 ) { const moduleAndArgs = step . split ( '-' ) ; await spawnP ( 'npm' , [ 'run' , moduleAndArgs . slice ( 1 ) . join ( '-' ) ] ) ; continue ; } else { switch ( step ) { case 'get-plugin-types' : await getPluginTypes ( ) ; break ; case 'init-test-fixtures' : await initTestFixtures ( ! TRACE_TEST_EXCLUDE_INTEGRATION ) ; break ; case 'run-unit-tests' : await runTests ( { includeGlobs : [ `${ BUILD_DIRECTORY }/test/test-*.js` , `${ BUILD_DIRECTORY }/test/plugins/test-*.js` , ] , excludeGlobs : unitTestExcludeGlobs , rootDir : BUILD_DIRECTORY , coverage : ! isWin , timeout : 4000 , } ) ; break ; default : console . log ( `> ${ step }: not found` ) ; break ; } } } } run ( steps ) . catch ( err => { console . error ( err ) ; process . exit ( 1 ) ; } ) ;