UNPKG

@code-pushup/cli

Version:

A CLI to run all kinds of code quality measurements to align your team with company goals

50 lines 2.28 kB
import { autoloadRc, readRcByPath } from '@code-pushup/core'; import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, uploadConfigSchema, } from '@code-pushup/models'; function buildPersistConfig(cliPersist, rcPersist) { return { outputDir: cliPersist?.outputDir ?? rcPersist?.outputDir ?? DEFAULT_PERSIST_OUTPUT_DIR, filename: cliPersist?.filename ?? rcPersist?.filename ?? DEFAULT_PERSIST_FILENAME, format: normalizeFormats(cliPersist?.format ?? rcPersist?.format ?? DEFAULT_PERSIST_FORMAT), skipReports: cliPersist?.skipReports ?? rcPersist?.skipReports ?? false, }; } export async function coreConfigMiddleware(processArgs) { const { config, tsconfig, persist: cliPersist, upload: cliUpload, cache: cliCache, ...remainingCliOptions } = processArgs; // Search for possible configuration file extensions if path is not given const importedRc = config ? await readRcByPath(config, tsconfig) : await autoloadRc(tsconfig); const { persist: rcPersist, upload: rcUpload, ...remainingRcConfig } = importedRc; const upload = rcUpload == null && cliUpload == null ? undefined : uploadConfigSchema.parse({ ...rcUpload, ...cliUpload, }); return { ...(config != null && { config }), cache: normalizeCache(cliCache), persist: buildPersistConfig(cliPersist, rcPersist), ...(upload != null && { upload }), ...remainingRcConfig, ...remainingCliOptions, }; } export const normalizeBooleanWithNegation = (propertyName, cliOptions, rcOptions) => propertyName in (cliOptions ?? {}) ? cliOptions?.[propertyName] : `no-${propertyName}` in (cliOptions ?? {}) ? false : (rcOptions?.[propertyName] ?? true); export const normalizeCache = (cache) => { if (cache == null) { return { write: false, read: false }; } if (typeof cache === 'boolean') { return { write: cache, read: cache }; } return { write: cache.write ?? false, read: cache.read ?? false }; }; export const normalizeFormats = (formats) => (formats ?? []).flatMap(format => format.split(',')); //# sourceMappingURL=core-config.middleware.js.map