text: /* eslint-disable global-require */
  /* eslint-disable import/no-dynamic-require */
  /* eslint-disable no-multi-assign */
  const fs = require('fs')
  const chalk = require('chalk')
  
  const targets = (exports.targets = fs.readdirSync('packages').filter((f) => {
    if (!fs.statSync(`packages/${f}`).isDirectory()) {
      return false
    }
    const pkg = require(`../packages/${f}/package.json`)
    if (pkg.private && !pkg.buildOptions) {
      return false
    }
    return true
  }))
  
  exports.fuzzyMatchTarget = (partialTargets, includeAllMatching) => {
    const matched = []
    partialTargets.forEach((partialTarget) => {
      for (const target of targets) {
        if (target.match(partialTarget)) {
          matched.push(target)
          if (!includeAllMatching) {
            break
          }
        }
      }
    })
  
    if (matched.length === 0) {
      console.log()
      console.error(
        `  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
          `Target ${chalk.underline(partialTargets)} not found!`
        )}`
      )
      console.log()
  
      process.exit(1)
    }
  
    return matched
  }
  