UNPKG

sortier

Version:
68 lines (67 loc) 2.5 kB
import { resolveOptions } from "../config/index.js"; import { IgnoredFileError } from "../error/ignored-file-error.js"; import { UnsupportedExtensionError } from "../error/unsupported-extension-error.js"; import { formatFile } from "../lib/format-file/index.js"; import { LogUtils, LoggerVerboseOption } from "../utilities/log-utils.js"; import { parseArgs } from "./args-parser.js"; import { getFiles } from "./get-files.js"; export function run(args) { const context = parseArgs(args); resolveOptions(process.cwd()); if (context.filepatterns.length === 0) { LogUtils.log(LoggerVerboseOption.Normal, "Must provide a file pattern to run sortier over (e.g. `sortier --ignore-unknown './**/*.ts'`)"); return 1; } const files = getFiles(context); if (files.length === 0) { if (context.filepatterns[0].indexOf("\\") !== -1) { LogUtils.log(LoggerVerboseOption.Normal, "Sortier no longer supports file paths that contain '\\' (see fast-glob@3.0.0 release notes). Is your glob pattern correct?"); } else { LogUtils.log(LoggerVerboseOption.Normal, `No filepaths found for file pattern(s) ${context.filepatterns.map((value) => `"${value}"`).join(" ")}`); } return 1; } let error = null; files.map((filePath) => { const start = Date.now(); try { formatFile(filePath); const end = Date.now(); const measured = end - start; LogUtils.log(LoggerVerboseOption.Normal, `${filePath} - ${measured}ms`); } catch (e) { const end = Date.now(); const measured = end - start; let level = LoggerVerboseOption.Normal; let shouldPrint = true; if (e instanceof IgnoredFileError) { level = LoggerVerboseOption.Diagnostic; } else if (e instanceof UnsupportedExtensionError && context.ignoreUnknown) { shouldPrint = false; } else { error = e; } if (shouldPrint) { LogUtils.log(level, `${filePath} - ${getStringFromError(e)} - ${measured}ms`); } } }); if (error != null) { return 1; } return 0; } function getStringFromError(e) { if (e instanceof Error) { const { message } = e; return message; } else if (typeof e === "string") { return e; } return e; }