UNPKG

@code-pushup/cli

Version:

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

56 lines 2.56 kB
import { autoloadRc, readRcByPath } from '@code-pushup/core'; import { DEFAULT_PERSIST_FILENAME, DEFAULT_PERSIST_FORMAT, DEFAULT_PERSIST_OUTPUT_DIR, uploadConfigSchema, validate, } from '@code-pushup/models'; import { logger, pluralizeToken } from '@code-pushup/utils'; 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; return logger.group('Loading configuration', async () => { // 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 : validate(uploadConfigSchema, { ...rcUpload, ...cliUpload }); const result = { ...(config != null && { config }), cache: normalizeCache(cliCache), persist: buildPersistConfig(cliPersist, rcPersist), ...(upload != null && { upload }), ...remainingRcConfig, ...remainingCliOptions, }; return { message: `Parsed config: ${summarizeConfig(result)}`, result, }; }); } function summarizeConfig(config) { return [ pluralizeToken('plugin', config.plugins.length), pluralizeToken('category', config.categories?.length ?? 0), `upload ${config.upload ? 'enabled' : 'disabled'}`, ].join(', '); } 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