diff --git a/src/format/shared.ts b/src/format/shared.ts index fa0ff02..3918987 100644 --- a/src/format/shared.ts +++ b/src/format/shared.ts @@ -19,7 +19,7 @@ const processContent = (config: LintConfig, content: string): string => { config.fileLintRules .filter((r) => !!r.fix) .forEach((rule) => { - processedContent = rule.fix!(processedContent) + processedContent = rule.fix!(processedContent, config) }) return processedContent diff --git a/src/rules/file/hasDoxygenHeader.ts b/src/rules/file/hasDoxygenHeader.ts index 2a81d55..3cc347d 100644 --- a/src/rules/file/hasDoxygenHeader.ts +++ b/src/rules/file/hasDoxygenHeader.ts @@ -3,8 +3,7 @@ import { LineEndings } from '../../types/LineEndings' import { FileLintRule } from '../../types/LintRule' import { LintRuleType } from '../../types/LintRuleType' import { Severity } from '../../types/Severity' - -const DoxygenHeader = `/**{lineEnding} @file{lineEnding} @brief {lineEnding}

SAS Macros

{lineEnding}**/` +import { DefaultLintConfiguration } from '../../utils/getLintConfig' const name = 'hasDoxygenHeader' const description = @@ -61,10 +60,11 @@ const fix = (value: string, config?: LintConfig): string => { } else if (result[0].message == messageForSingleAsterisk) return value.replace('/*', '/**') + config = config || new LintConfig(DefaultLintConfiguration) const lineEndingConfig = config?.lineEndings || LineEndings.LF const lineEnding = lineEndingConfig === LineEndings.LF ? '\n' : '\r\n' - return `${DoxygenHeader.replace( + return `${config?.defaultHeader.replace( /{lineEnding}/g, lineEnding )}${lineEnding}${value}` diff --git a/src/types/LintConfig.ts b/src/types/LintConfig.ts index e2fce14..93c1b45 100644 --- a/src/types/LintConfig.ts +++ b/src/types/LintConfig.ts @@ -16,6 +16,7 @@ import { import { lowerCaseFileNames, noSpacesInFileNames } from '../rules/path' import { LineEndings } from './LineEndings' import { FileLintRule, LineLintRule, PathLintRule } from './LintRule' +import { getDefaultHeader } from '../utils' /** * LintConfig is the logical representation of the .sasjslint file. @@ -32,6 +33,7 @@ export class LintConfig { readonly maxLineLength: number = 80 readonly indentationMultiple: number = 2 readonly lineEndings: LineEndings = LineEndings.LF + readonly defaultHeader: string = getDefaultHeader() constructor(json?: any) { if (json?.ignoreList) { @@ -87,6 +89,10 @@ export class LintConfig { this.fileLintRules.push(hasDoxygenHeader) } + if (json?.defaultHeader) { + this.defaultHeader = json.defaultHeader + } + if (json?.noSpacesInFileNames) { this.pathLintRules.push(noSpacesInFileNames) } diff --git a/src/utils/getLintConfig.ts b/src/utils/getLintConfig.ts index 2bad469..1175a53 100644 --- a/src/utils/getLintConfig.ts +++ b/src/utils/getLintConfig.ts @@ -3,6 +3,9 @@ import { LintConfig } from '../types/LintConfig' import { readFile } from '@sasjs/utils/file' import { getProjectRoot } from './getProjectRoot' +export const getDefaultHeader = () => + `/**{lineEnding} @file{lineEnding} @brief {lineEnding}

SAS Macros

{lineEnding}**/` + /** * Default configuration that is used when a .sasjslint file is not found */ @@ -18,7 +21,8 @@ export const DefaultLintConfiguration = { hasMacroNameInMend: true, noNestedMacros: true, hasMacroParentheses: true, - strictMacroDefinition: true + strictMacroDefinition: true, + defaultHeader: getDefaultHeader() } /**