UNPKG

codacy-seed

Version:
58 lines (49 loc) 1.51 kB
import { Codacyrc, Parameter, Pattern, PatternSpec, Specification, Tool } from "." export function withDefaultParameters( codacyrc: Codacyrc, specification?: Specification ): Codacyrc { if (codacyrc.tools === undefined || specification?.patterns === undefined) return codacyrc const toolsWithDefaults = codacyrc.tools.map((tool) => { if (tool.patterns === undefined) return tool const patternsWithDefaults = tool.patterns.map((pattern) => withDefaultParamentersForPattern(pattern, specification.patterns) ) return new Tool(tool.name, patternsWithDefaults) }) return new Codacyrc(codacyrc.files, toolsWithDefaults, codacyrc.options) } function withDefaultParamentersForPattern( pattern: Pattern, specificationPatterns: PatternSpec[] ): Pattern { const specificationPattern = specificationPatterns.find( (specPattern) => specPattern.patternId === pattern.patternId ) const parameters = specificationPattern ? missingParameters(pattern, specificationPattern) : pattern.parameters return new Pattern(pattern.patternId, parameters) } function missingParameters( pattern: Pattern, specificationPattern: PatternSpec ): Parameter[] { return specificationPattern.parameters.map((specParameter) => { const overrideParameter = pattern.parameters.find( (param) => param.name === specParameter.name ) return ( overrideParameter ?? new Parameter(specParameter.name, specParameter.default) ) }) }