c8.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env node
  2. 'use strict'
  3. const { foregroundChild } = require('foreground-child')
  4. const { outputReport } = require('../lib/commands/report')
  5. const { rm, mkdir } = require('fs/promises')
  6. const {
  7. buildYargs,
  8. hideInstrumenteeArgs,
  9. hideInstrumenterArgs
  10. } = require('../lib/parse-args')
  11. const instrumenterArgs = hideInstrumenteeArgs()
  12. let argv = buildYargs().parse(instrumenterArgs)
  13. async function run () {
  14. if ([
  15. 'check-coverage', 'report'
  16. ].indexOf(argv._[0]) !== -1) {
  17. argv = buildYargs(true).parse(process.argv.slice(2))
  18. } else {
  19. if (argv.clean) {
  20. await rm(argv.tempDirectory, { recursive: true, force: true })
  21. }
  22. await mkdir(argv.tempDirectory, { recursive: true })
  23. process.env.NODE_V8_COVERAGE = argv.tempDirectory
  24. foregroundChild(hideInstrumenterArgs(argv), async () => {
  25. try {
  26. await outputReport(argv)
  27. return process.exitCode
  28. } catch (err) {
  29. console.error(err.stack)
  30. return 1
  31. }
  32. })
  33. }
  34. }
  35. run().catch((err) => {
  36. console.error(err.stack)
  37. process.exitCode = 1
  38. })