utils.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // @ts-check
  2. import fs from 'node:fs'
  3. import pico from 'picocolors'
  4. import { createRequire } from 'node:module'
  5. const require = createRequire(import.meta.url)
  6. export const targets = fs.readdirSync('packages').filter(f => {
  7. if (!fs.statSync(`packages/${f}`).isDirectory()) {
  8. return false
  9. }
  10. const pkg = require(`../packages/${f}/package.json`)
  11. if (pkg.private && !pkg.buildOptions) {
  12. return false
  13. }
  14. return true
  15. })
  16. export function fuzzyMatchTarget(partialTargets, includeAllMatching) {
  17. const matched = []
  18. partialTargets.forEach(partialTarget => {
  19. for (const target of targets) {
  20. if (target.match(partialTarget)) {
  21. matched.push(target)
  22. if (!includeAllMatching) {
  23. break
  24. }
  25. }
  26. }
  27. })
  28. if (matched.length) {
  29. return matched
  30. } else {
  31. console.log()
  32. console.error(
  33. ` ${pico.white(pico.bgRed(' ERROR '))} ${pico.red(
  34. `Target ${pico.underline(partialTargets)} not found!`
  35. )}`
  36. )
  37. console.log()
  38. process.exit(1)
  39. }
  40. }