forked from webpro-nl/knip
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
30 lines (23 loc) · 1.29 KB
/
Copy pathindex.ts
File metadata and controls
30 lines (23 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { timerify } from '../../util/Performance.js';
import { hasDependency, load } from '../../util/plugin.js';
import { getArgumentValues } from './helpers.js';
import type { MarkdownlintConfig } from './types.js';
import type { IsPluginEnabledCallback, GenericPluginCallback } from '../../types/plugins.js';
// https://github.com/igorshubovych/markdownlint-cli
export const NAME = 'markdownlint';
/** @public */
export const ENABLERS = ['markdownlint-cli'];
export const isEnabled: IsPluginEnabledCallback = ({ dependencies }) => hasDependency(dependencies, ENABLERS);
export const CONFIG_FILE_PATTERNS = ['.markdownlint.{json,jsonc}', '.markdownlint.{yml,yaml}'];
const findMarkdownlintConfigDependencies: GenericPluginCallback = async (configFilePath, { manifest }) => {
const config: MarkdownlintConfig = await load(configFilePath);
const extend = config?.extends ? [config.extends] : [];
const scripts = manifest.scripts
? Object.values(manifest.scripts).filter((script): script is string => typeof script === 'string')
: [];
const uses = scripts
.filter(script => script.includes('markdownlint '))
.flatMap(script => getArgumentValues(script, / (--rules|-r)[ =]([^ ]+)/g));
return [...extend, ...uses];
};
export const findDependencies = timerify(findMarkdownlintConfigDependencies);