OverviewFilesCommitsIssuesDocsReleasesPeers

mirall-cli / node_modules / formatly / lib / resolveFormatter.js

35 lines · javascript ref:
import { findPackage } from "fd-package-json";
import * as fs from "node:fs/promises";
import { formatters } from "./formatters/all.js";
async function resolveFormatter(cwd = ".") {
  const children = await fs.readdir(cwd);
  for (const child of children) {
    for (const formatter of formatters) {
      if (formatter.testers.configFile.test(child)) {
        return formatter;
      }
    }
  }
  const packageData = await findPackage(cwd);
  if (!packageData) {
    return void 0;
  }
  const { scripts = {}, ...otherKeys } = packageData;
  for (const script of Object.values(scripts)) {
    for (const formatter of formatters) {
      if (formatter.testers.script.test(script)) {
        return formatter;
      }
    }
  }
  for (const formatter of formatters) {
    if ("packageKey" in formatter.testers && formatter.testers.packageKey in otherKeys) {
      return formatter;
    }
  }
  return void 0;
}
export {
  resolveFormatter
};