| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // @ts-check
- import fs from 'node:fs'
- import pico from 'picocolors'
- import { createRequire } from 'node:module'
- const require = createRequire(import.meta.url)
- export const targets = fs.readdirSync('packages').filter(f => {
- if (
- !fs.statSync(`packages/${f}`).isDirectory() ||
- !fs.existsSync(`packages/${f}/package.json`)
- ) {
- return false
- }
- const pkg = require(`../packages/${f}/package.json`)
- if (pkg.private && !pkg.buildOptions) {
- return false
- }
- return true
- })
- /**
- *
- * @param {ReadonlyArray<string>} partialTargets
- * @param {boolean | undefined} includeAllMatching
- */
- export function fuzzyMatchTarget(partialTargets, includeAllMatching) {
- /** @type {Array<string>} */
- const matched = []
- partialTargets.forEach(partialTarget => {
- if (!includeAllMatching && targets.includes(partialTarget)) {
- matched.push(partialTarget)
- return
- }
- for (const target of targets) {
- if (target.match(partialTarget)) {
- matched.push(target)
- if (!includeAllMatching) {
- break
- }
- }
- }
- })
- if (matched.length) {
- return matched
- } else {
- console.log()
- console.error(
- ` ${pico.white(pico.bgRed(' ERROR '))} ${pico.red(
- `Target ${pico.underline(partialTargets.toString())} not found!`,
- )}`,
- )
- console.log()
- process.exit(1)
- }
- }
|