aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-codemod/src/utils/loadTransformers.ts
blob: 9ba5ca17819cb4b352f897f95d7232ab6b4aa443 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import path from "path";
import fs from "fs-extra";
import type { Transformer } from "../types";

// transforms/ is a sibling when built in in dist/
export const transformerDirectory =
  process.env.NODE_ENV === "test"
    ? path.join(__dirname, "../transforms")
    : path.join(__dirname, "./transforms");

export default function loadTransformers(): Array<Transformer> {
  const transformerFiles = fs.readdirSync(transformerDirectory);
  return transformerFiles
    .map((transformerFilename) => {
      const transformerPath = path.join(
        transformerDirectory,
        transformerFilename
      );
      try {
        return require(transformerPath).default;
      } catch (e) {
        // we ignore this error because it's likely that the file is not a transformer (README, etc)
        return undefined;
      }
    })
    .filter(Boolean);
}