UNPKG

clean-code-metrics

Version:
72 lines (66 loc) 1.61 kB
import fs from "fs"; import { Config } from "./types/TaskMetrics"; export const defaultConfig: Config = { basePath: "./", ignorePath: [".gitignore"], ignoreCase: false, searchPattern: [ "TODO", "FIXME", "NOTE", "OPTIMIZE", "HACK", "BUG", "XXX", "DOCME", "PENDING", "DISCUSS", "REVIEW", ], type: "Config", }; type InitConfig = { type: "InitConfig"; basePath?: string; ignorePath?: string[]; ignoreCase?: boolean; searchPattern?: string[]; }; function loadConfigFile(path: fs.PathLike): InitConfig | undefined { if (fs.existsSync(path)) { const file = fs.readFileSync(path).toString("utf-8"); return JSON.parse(file) as InitConfig; //TODO validate JSON input } else { return undefined; } } function loadPackageJSON(packageJSON: fs.PathLike): InitConfig | undefined { if (fs.existsSync(packageJSON)) { const packJSON = JSON.parse(fs.readFileSync(packageJSON).toString("utf-8")); return packJSON.cleanCodeMetrics as InitConfig; } else { return undefined; } } export function load( configOverridePath?: fs.PathLike, packageJSONPath: fs.PathLike = "package.json", configPath: fs.PathLike = "test.config.json", ): Config { if (configOverridePath) { // override Path doesn't load package.json or default config file return { ...defaultConfig, ...loadConfigFile(configOverridePath), } as Config; } else { //package.json values have precedence const config = loadConfigFile(configPath); const packageJsonConfig = loadPackageJSON(packageJSONPath); return { ...defaultConfig, ...config, ...packageJsonConfig, } as Config; } }