@paretools/lint 0.8.5 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/formatters.d.ts +3 -0
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +54 -9
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/lint-runner.js +7 -7
- package/dist/lib/parsers.d.ts +57 -10
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +373 -44
- package/dist/lib/parsers.js.map +1 -1
- package/dist/schemas/index.d.ts +16 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +14 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/biome-check.d.ts.map +1 -1
- package/dist/tools/biome-check.js +80 -11
- package/dist/tools/biome-check.js.map +1 -1
- package/dist/tools/biome-format.d.ts.map +1 -1
- package/dist/tools/biome-format.js +55 -11
- package/dist/tools/biome-format.js.map +1 -1
- package/dist/tools/format-check.d.ts.map +1 -1
- package/dist/tools/format-check.js +90 -13
- package/dist/tools/format-check.js.map +1 -1
- package/dist/tools/hadolint.d.ts.map +1 -1
- package/dist/tools/hadolint.js +85 -10
- package/dist/tools/hadolint.js.map +1 -1
- package/dist/tools/lint.d.ts.map +1 -1
- package/dist/tools/lint.js +62 -10
- package/dist/tools/lint.js.map +1 -1
- package/dist/tools/oxlint.d.ts.map +1 -1
- package/dist/tools/oxlint.js +94 -10
- package/dist/tools/oxlint.js.map +1 -1
- package/dist/tools/prettier-format.d.ts.map +1 -1
- package/dist/tools/prettier-format.js +99 -15
- package/dist/tools/prettier-format.js.map +1 -1
- package/dist/tools/shellcheck.d.ts.map +1 -1
- package/dist/tools/shellcheck.js +100 -15
- package/dist/tools/shellcheck.js.map +1 -1
- package/dist/tools/stylelint.d.ts.map +1 -1
- package/dist/tools/stylelint.js +58 -10
- package/dist/tools/stylelint.js.map +1 -1
- package/package.json +2 -2
package/dist/schemas/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { z } from "zod";
|
|
|
3
3
|
export declare const LintDiagnosticSchema: z.ZodObject<{
|
|
4
4
|
file: z.ZodString;
|
|
5
5
|
line: z.ZodNumber;
|
|
6
|
+
column: z.ZodOptional<z.ZodNumber>;
|
|
6
7
|
severity: z.ZodEnum<{
|
|
7
8
|
error: "error";
|
|
8
9
|
warning: "warning";
|
|
@@ -10,12 +11,16 @@ export declare const LintDiagnosticSchema: z.ZodObject<{
|
|
|
10
11
|
}>;
|
|
11
12
|
rule: z.ZodString;
|
|
12
13
|
message: z.ZodString;
|
|
14
|
+
wikiUrl: z.ZodOptional<z.ZodString>;
|
|
15
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
suggestedFixes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13
17
|
}, z.core.$strip>;
|
|
14
18
|
/** Zod schema for structured ESLint output including diagnostics, counts, and files checked. */
|
|
15
19
|
export declare const LintResultSchema: z.ZodObject<{
|
|
16
20
|
diagnostics: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
17
21
|
file: z.ZodString;
|
|
18
22
|
line: z.ZodNumber;
|
|
23
|
+
column: z.ZodOptional<z.ZodNumber>;
|
|
19
24
|
severity: z.ZodEnum<{
|
|
20
25
|
error: "error";
|
|
21
26
|
warning: "warning";
|
|
@@ -23,11 +28,20 @@ export declare const LintResultSchema: z.ZodObject<{
|
|
|
23
28
|
}>;
|
|
24
29
|
rule: z.ZodString;
|
|
25
30
|
message: z.ZodString;
|
|
31
|
+
wikiUrl: z.ZodOptional<z.ZodString>;
|
|
32
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
suggestedFixes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
26
34
|
}, z.core.$strip>>>;
|
|
27
35
|
total: z.ZodNumber;
|
|
28
36
|
errors: z.ZodNumber;
|
|
29
37
|
warnings: z.ZodNumber;
|
|
38
|
+
fixableErrorCount: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
fixableWarningCount: z.ZodOptional<z.ZodNumber>;
|
|
30
40
|
filesChecked: z.ZodNumber;
|
|
41
|
+
deprecations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
42
|
+
text: z.ZodString;
|
|
43
|
+
reference: z.ZodOptional<z.ZodString>;
|
|
44
|
+
}, z.core.$strip>>>;
|
|
31
45
|
}, z.core.$strip>;
|
|
32
46
|
export type LintResult = z.infer<typeof LintResultSchema>;
|
|
33
47
|
export type LintDiagnostic = z.infer<typeof LintDiagnosticSchema>;
|
|
@@ -41,8 +55,10 @@ export type FormatCheckResult = z.infer<typeof FormatCheckResultSchema>;
|
|
|
41
55
|
/** Zod schema for structured format-write output (Prettier --write, Biome format --write). */
|
|
42
56
|
export declare const FormatWriteResultSchema: z.ZodObject<{
|
|
43
57
|
filesChanged: z.ZodNumber;
|
|
58
|
+
filesUnchanged: z.ZodOptional<z.ZodNumber>;
|
|
44
59
|
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
60
|
success: z.ZodBoolean;
|
|
61
|
+
errorMessage: z.ZodOptional<z.ZodString>;
|
|
46
62
|
}, z.core.$strip>;
|
|
47
63
|
export type FormatWriteResult = z.infer<typeof FormatWriteResultSchema>;
|
|
48
64
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sGAAsG;AACtG,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sGAAsG;AACtG,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAU/B,CAAC;AAEH,gGAAgG;AAChG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,8GAA8G;AAC9G,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,8FAA8F;AAC9F,eAAO,MAAM,uBAAuB;;;;;;iBAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -3,9 +3,13 @@ import { z } from "zod";
|
|
|
3
3
|
export const LintDiagnosticSchema = z.object({
|
|
4
4
|
file: z.string(),
|
|
5
5
|
line: z.number(),
|
|
6
|
+
column: z.number().optional(),
|
|
6
7
|
severity: z.enum(["error", "warning", "info"]),
|
|
7
8
|
rule: z.string(),
|
|
8
9
|
message: z.string(),
|
|
10
|
+
wikiUrl: z.string().optional(),
|
|
11
|
+
tags: z.array(z.string()).optional(),
|
|
12
|
+
suggestedFixes: z.array(z.string()).optional(),
|
|
9
13
|
});
|
|
10
14
|
/** Zod schema for structured ESLint output including diagnostics, counts, and files checked. */
|
|
11
15
|
export const LintResultSchema = z.object({
|
|
@@ -13,7 +17,15 @@ export const LintResultSchema = z.object({
|
|
|
13
17
|
total: z.number(),
|
|
14
18
|
errors: z.number(),
|
|
15
19
|
warnings: z.number(),
|
|
20
|
+
fixableErrorCount: z.number().optional(),
|
|
21
|
+
fixableWarningCount: z.number().optional(),
|
|
16
22
|
filesChecked: z.number(),
|
|
23
|
+
deprecations: z
|
|
24
|
+
.array(z.object({
|
|
25
|
+
text: z.string(),
|
|
26
|
+
reference: z.string().optional(),
|
|
27
|
+
}))
|
|
28
|
+
.optional(),
|
|
17
29
|
});
|
|
18
30
|
/** Zod schema for structured Prettier format check output with formatted status and unformatted file list. */
|
|
19
31
|
export const FormatCheckResultSchema = z.object({
|
|
@@ -24,7 +36,9 @@ export const FormatCheckResultSchema = z.object({
|
|
|
24
36
|
/** Zod schema for structured format-write output (Prettier --write, Biome format --write). */
|
|
25
37
|
export const FormatWriteResultSchema = z.object({
|
|
26
38
|
filesChanged: z.number(),
|
|
39
|
+
filesUnchanged: z.number().optional(),
|
|
27
40
|
files: z.array(z.string()).optional(),
|
|
28
41
|
success: z.boolean(),
|
|
42
|
+
errorMessage: z.string().optional(),
|
|
29
43
|
});
|
|
30
44
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACjC,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC,CAAC;AAKH,8GAA8G;AAC9G,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-check.d.ts","sourceRoot":"","sources":["../../src/tools/biome-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"biome-check.d.ts","sourceRoot":"","sources":["../../src/tools/biome-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QA6HvD"}
|
|
@@ -8,32 +8,101 @@ import { LintResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerBiomeCheckTool(server) {
|
|
9
9
|
server.registerTool("biome-check", {
|
|
10
10
|
title: "Biome Check",
|
|
11
|
-
description: "Runs Biome check (lint + format) and returns structured diagnostics (file, line, rule, severity, message).
|
|
11
|
+
description: "Runs Biome check (lint + format) and returns structured diagnostics (file, line, rule, severity, message).",
|
|
12
12
|
inputSchema: {
|
|
13
|
-
path: z
|
|
14
|
-
.string()
|
|
15
|
-
.max(INPUT_LIMITS.PATH_MAX)
|
|
16
|
-
.optional()
|
|
17
|
-
.describe("Project root path (default: cwd)"),
|
|
13
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
|
|
18
14
|
patterns: z
|
|
19
15
|
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
20
16
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
21
17
|
.optional()
|
|
22
18
|
.default(["."])
|
|
23
19
|
.describe("File patterns to check (default: ['.'])"),
|
|
24
|
-
|
|
20
|
+
apply: z.boolean().optional().describe("Apply safe fixes automatically (maps to --apply)"),
|
|
21
|
+
applyUnsafe: z
|
|
22
|
+
.boolean()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("Apply safe and unsafe fixes automatically (maps to --apply-unsafe)"),
|
|
25
|
+
diagnosticLevel: z
|
|
26
|
+
.enum(["info", "warn", "error"])
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Minimum diagnostic level to report"),
|
|
29
|
+
changed: z
|
|
30
|
+
.boolean()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Only check VCS-changed files (maps to --changed)"),
|
|
33
|
+
staged: z.boolean().optional().describe("Only check staged files (maps to --staged)"),
|
|
34
|
+
since: z
|
|
35
|
+
.string()
|
|
36
|
+
.max(INPUT_LIMITS.STRING_MAX)
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Only check files changed since this git ref (maps to --since)"),
|
|
39
|
+
configPath: z
|
|
40
|
+
.string()
|
|
41
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Path to Biome configuration file (maps to --config-path)"),
|
|
44
|
+
linterEnabled: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Enable or disable the linter (maps to --linter-enabled)"),
|
|
48
|
+
formatterEnabled: z
|
|
25
49
|
.boolean()
|
|
26
50
|
.optional()
|
|
27
|
-
.
|
|
28
|
-
|
|
51
|
+
.describe("Enable or disable the formatter (maps to --formatter-enabled)"),
|
|
52
|
+
maxDiagnostics: z
|
|
53
|
+
.number()
|
|
54
|
+
.int()
|
|
55
|
+
.min(0)
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Maximum number of diagnostics to display (maps to --max-diagnostics)"),
|
|
58
|
+
skip: z
|
|
59
|
+
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
60
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Rules to skip (maps to --skip)"),
|
|
63
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
29
64
|
},
|
|
30
65
|
outputSchema: LintResultSchema,
|
|
31
|
-
}, async ({ path, patterns, compact }) => {
|
|
66
|
+
}, async ({ path, patterns, apply, applyUnsafe, diagnosticLevel, changed, staged, since, configPath, linterEnabled, formatterEnabled, maxDiagnostics, skip, compact, }) => {
|
|
32
67
|
const cwd = path || process.cwd();
|
|
33
68
|
for (const p of patterns ?? []) {
|
|
34
69
|
assertNoFlagInjection(p, "patterns");
|
|
35
70
|
}
|
|
36
|
-
const args = ["check", "--reporter=json"
|
|
71
|
+
const args = ["check", "--reporter=json"];
|
|
72
|
+
if (apply)
|
|
73
|
+
args.push("--apply");
|
|
74
|
+
if (applyUnsafe)
|
|
75
|
+
args.push("--apply-unsafe");
|
|
76
|
+
if (diagnosticLevel)
|
|
77
|
+
args.push(`--diagnostic-level=${diagnosticLevel}`);
|
|
78
|
+
if (changed)
|
|
79
|
+
args.push("--changed");
|
|
80
|
+
if (staged)
|
|
81
|
+
args.push("--staged");
|
|
82
|
+
if (since) {
|
|
83
|
+
assertNoFlagInjection(since, "since");
|
|
84
|
+
args.push(`--since=${since}`);
|
|
85
|
+
}
|
|
86
|
+
if (configPath) {
|
|
87
|
+
assertNoFlagInjection(configPath, "configPath");
|
|
88
|
+
args.push(`--config-path=${configPath}`);
|
|
89
|
+
}
|
|
90
|
+
if (linterEnabled !== undefined) {
|
|
91
|
+
args.push(`--linter-enabled=${linterEnabled}`);
|
|
92
|
+
}
|
|
93
|
+
if (formatterEnabled !== undefined) {
|
|
94
|
+
args.push(`--formatter-enabled=${formatterEnabled}`);
|
|
95
|
+
}
|
|
96
|
+
if (maxDiagnostics !== undefined) {
|
|
97
|
+
args.push(`--max-diagnostics=${maxDiagnostics}`);
|
|
98
|
+
}
|
|
99
|
+
if (skip) {
|
|
100
|
+
for (const rule of skip) {
|
|
101
|
+
assertNoFlagInjection(rule, "skip");
|
|
102
|
+
args.push(`--skip=${rule}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
args.push(...(patterns || ["."]));
|
|
37
106
|
const result = await biome(args, cwd);
|
|
38
107
|
const data = parseBiomeJson(result.stdout);
|
|
39
108
|
return compactDualOutput(data, result.stdout, formatLint, compactLintMap, formatLintCompact, compact === false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-check.js","sourceRoot":"","sources":["../../src/tools/biome-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"biome-check.js","sourceRoot":"","sources":["../../src/tools/biome-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-format.d.ts","sourceRoot":"","sources":["../../src/tools/biome-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"biome-format.d.ts","sourceRoot":"","sources":["../../src/tools/biome-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAgGxD"}
|
|
@@ -8,32 +8,76 @@ import { FormatWriteResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerBiomeFormatTool(server) {
|
|
9
9
|
server.registerTool("biome-format", {
|
|
10
10
|
title: "Biome Format",
|
|
11
|
-
description: "Formats files with Biome (format --write) and returns a structured list of changed files.
|
|
11
|
+
description: "Formats files with Biome (format --write) and returns a structured list of changed files.",
|
|
12
12
|
inputSchema: {
|
|
13
|
-
path: z
|
|
14
|
-
.string()
|
|
15
|
-
.max(INPUT_LIMITS.PATH_MAX)
|
|
16
|
-
.optional()
|
|
17
|
-
.describe("Project root path (default: cwd)"),
|
|
13
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
|
|
18
14
|
patterns: z
|
|
19
15
|
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
20
16
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
21
17
|
.optional()
|
|
22
18
|
.default(["."])
|
|
23
19
|
.describe("File patterns to format (default: ['.'])"),
|
|
24
|
-
|
|
20
|
+
changed: z
|
|
25
21
|
.boolean()
|
|
26
22
|
.optional()
|
|
27
|
-
.
|
|
28
|
-
|
|
23
|
+
.describe("Only format VCS-changed files (maps to --changed)"),
|
|
24
|
+
staged: z.boolean().optional().describe("Only format staged files (maps to --staged)"),
|
|
25
|
+
since: z
|
|
26
|
+
.string()
|
|
27
|
+
.max(INPUT_LIMITS.STRING_MAX)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Only format files changed since this git ref (maps to --since)"),
|
|
30
|
+
configPath: z
|
|
31
|
+
.string()
|
|
32
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Path to Biome configuration file (maps to --config-path)"),
|
|
35
|
+
indentStyle: z
|
|
36
|
+
.enum(["tab", "space"])
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Indent style override (tab or space)"),
|
|
39
|
+
lineWidth: z.number().optional().describe("Line width override"),
|
|
40
|
+
quoteStyle: z
|
|
41
|
+
.enum(["single", "double"])
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Quote style override (single or double)"),
|
|
44
|
+
semicolons: z
|
|
45
|
+
.enum(["always", "asNeeded"])
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Semicolon style (always or asNeeded)"),
|
|
48
|
+
lineEnding: z.enum(["lf", "crlf", "cr"]).optional().describe("Line ending style"),
|
|
49
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
29
50
|
},
|
|
30
51
|
outputSchema: FormatWriteResultSchema,
|
|
31
|
-
}, async ({ path, patterns, compact }) => {
|
|
52
|
+
}, async ({ path, patterns, changed, staged, since, configPath, indentStyle, lineWidth, quoteStyle, semicolons, lineEnding, compact, }) => {
|
|
32
53
|
const cwd = path || process.cwd();
|
|
33
54
|
for (const p of patterns ?? []) {
|
|
34
55
|
assertNoFlagInjection(p, "patterns");
|
|
35
56
|
}
|
|
36
|
-
const args = ["format", "--write",
|
|
57
|
+
const args = ["format", "--write", "--reporter=json"];
|
|
58
|
+
if (changed)
|
|
59
|
+
args.push("--changed");
|
|
60
|
+
if (staged)
|
|
61
|
+
args.push("--staged");
|
|
62
|
+
if (since) {
|
|
63
|
+
assertNoFlagInjection(since, "since");
|
|
64
|
+
args.push(`--since=${since}`);
|
|
65
|
+
}
|
|
66
|
+
if (configPath) {
|
|
67
|
+
assertNoFlagInjection(configPath, "configPath");
|
|
68
|
+
args.push(`--config-path=${configPath}`);
|
|
69
|
+
}
|
|
70
|
+
if (indentStyle)
|
|
71
|
+
args.push(`--indent-style=${indentStyle}`);
|
|
72
|
+
if (lineWidth !== undefined)
|
|
73
|
+
args.push(`--line-width=${lineWidth}`);
|
|
74
|
+
if (quoteStyle)
|
|
75
|
+
args.push(`--quote-style=${quoteStyle}`);
|
|
76
|
+
if (semicolons)
|
|
77
|
+
args.push(`--semicolons=${semicolons}`);
|
|
78
|
+
if (lineEnding)
|
|
79
|
+
args.push(`--line-ending=${lineEnding}`);
|
|
80
|
+
args.push(...(patterns || ["."]));
|
|
37
81
|
const result = await biome(args, cwd);
|
|
38
82
|
const data = parseBiomeFormat(result.stdout, result.stderr, result.exitCode);
|
|
39
83
|
return compactDualOutput(data, result.stdout, formatFormatWrite, compactFormatWriteMap, formatFormatWriteCompact, compact === false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"biome-format.js","sourceRoot":"","sources":["../../src/tools/biome-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"biome-format.js","sourceRoot":"","sources":["../../src/tools/biome-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-check.d.ts","sourceRoot":"","sources":["../../src/tools/format-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"format-check.d.ts","sourceRoot":"","sources":["../../src/tools/format-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAkIxD"}
|
|
@@ -1,41 +1,118 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { prettier } from "../lib/lint-runner.js";
|
|
4
|
-
import {
|
|
4
|
+
import { parsePrettierListDifferent } from "../lib/parsers.js";
|
|
5
5
|
import { formatFormatCheck, compactFormatCheckMap, formatFormatCheckCompact, } from "../lib/formatters.js";
|
|
6
6
|
import { FormatCheckResultSchema } from "../schemas/index.js";
|
|
7
7
|
/** Registers the `format-check` tool on the given MCP server. */
|
|
8
8
|
export function registerFormatCheckTool(server) {
|
|
9
9
|
server.registerTool("format-check", {
|
|
10
10
|
title: "Prettier Check",
|
|
11
|
-
description: "Checks if files are formatted and returns a structured list of files needing formatting.
|
|
11
|
+
description: "Checks if files are formatted and returns a structured list of files needing formatting.",
|
|
12
12
|
inputSchema: {
|
|
13
|
-
path: z
|
|
14
|
-
.string()
|
|
15
|
-
.max(INPUT_LIMITS.PATH_MAX)
|
|
16
|
-
.optional()
|
|
17
|
-
.describe("Project root path (default: cwd)"),
|
|
13
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
|
|
18
14
|
patterns: z
|
|
19
15
|
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
20
16
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
21
17
|
.optional()
|
|
22
18
|
.default(["."])
|
|
23
19
|
.describe("File patterns to check (default: ['.'])"),
|
|
24
|
-
|
|
20
|
+
ignoreUnknown: z
|
|
21
|
+
.boolean()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe("Ignore files that cannot be parsed (maps to --ignore-unknown)"),
|
|
24
|
+
cache: z
|
|
25
|
+
.boolean()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Cache formatted files for faster subsequent checks (maps to --cache)"),
|
|
28
|
+
noConfig: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe("Do not look for a configuration file (maps to --no-config)"),
|
|
32
|
+
logLevel: z
|
|
33
|
+
.enum(["silent", "error", "warn", "log", "debug"])
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Log level to control output verbosity"),
|
|
36
|
+
config: z
|
|
37
|
+
.string()
|
|
38
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Path to a Prettier configuration file (maps to --config)"),
|
|
41
|
+
ignorePath: z
|
|
42
|
+
.string()
|
|
43
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Path to a custom ignore file (maps to --ignore-path)"),
|
|
46
|
+
parser: z
|
|
47
|
+
.string()
|
|
48
|
+
.max(INPUT_LIMITS.STRING_MAX)
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Force a specific parser for ambiguous file types (maps to --parser)"),
|
|
51
|
+
tabWidth: z
|
|
52
|
+
.number()
|
|
53
|
+
.int()
|
|
54
|
+
.min(0)
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Number of spaces per indentation level (maps to --tab-width)"),
|
|
57
|
+
singleQuote: z
|
|
25
58
|
.boolean()
|
|
26
59
|
.optional()
|
|
27
|
-
.
|
|
28
|
-
|
|
60
|
+
.describe("Use single quotes instead of double quotes where possible"),
|
|
61
|
+
trailingComma: z
|
|
62
|
+
.enum(["all", "es5", "none"])
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Print trailing commas wherever possible"),
|
|
65
|
+
printWidth: z
|
|
66
|
+
.number()
|
|
67
|
+
.int()
|
|
68
|
+
.min(1)
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("The line length where Prettier will try to wrap"),
|
|
71
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
29
72
|
},
|
|
30
73
|
outputSchema: FormatCheckResultSchema,
|
|
31
|
-
}, async ({ path, patterns, compact }) => {
|
|
74
|
+
}, async ({ path, patterns, ignoreUnknown, cache, noConfig, logLevel, config, ignorePath, parser, tabWidth, singleQuote, trailingComma, printWidth, compact, }) => {
|
|
32
75
|
const cwd = path || process.cwd();
|
|
33
76
|
for (const p of patterns ?? []) {
|
|
34
77
|
assertNoFlagInjection(p, "patterns");
|
|
35
78
|
}
|
|
36
|
-
const args = ["--
|
|
79
|
+
const args = ["--list-different"];
|
|
80
|
+
if (ignoreUnknown)
|
|
81
|
+
args.push("--ignore-unknown");
|
|
82
|
+
if (cache)
|
|
83
|
+
args.push("--cache");
|
|
84
|
+
if (noConfig)
|
|
85
|
+
args.push("--no-config");
|
|
86
|
+
if (logLevel)
|
|
87
|
+
args.push(`--log-level=${logLevel}`);
|
|
88
|
+
if (config) {
|
|
89
|
+
assertNoFlagInjection(config, "config");
|
|
90
|
+
args.push(`--config=${config}`);
|
|
91
|
+
}
|
|
92
|
+
if (ignorePath) {
|
|
93
|
+
assertNoFlagInjection(ignorePath, "ignorePath");
|
|
94
|
+
args.push(`--ignore-path=${ignorePath}`);
|
|
95
|
+
}
|
|
96
|
+
if (parser) {
|
|
97
|
+
assertNoFlagInjection(parser, "parser");
|
|
98
|
+
args.push(`--parser=${parser}`);
|
|
99
|
+
}
|
|
100
|
+
if (tabWidth !== undefined)
|
|
101
|
+
args.push(`--tab-width=${tabWidth}`);
|
|
102
|
+
if (singleQuote !== undefined)
|
|
103
|
+
args.push(`--single-quote=${singleQuote}`);
|
|
104
|
+
if (trailingComma)
|
|
105
|
+
args.push(`--trailing-comma=${trailingComma}`);
|
|
106
|
+
if (printWidth !== undefined)
|
|
107
|
+
args.push(`--print-width=${printWidth}`);
|
|
108
|
+
args.push(...(patterns || ["."]));
|
|
37
109
|
const result = await prettier(args, cwd);
|
|
38
|
-
const
|
|
110
|
+
const files = parsePrettierListDifferent(result.stdout);
|
|
111
|
+
const data = {
|
|
112
|
+
formatted: result.exitCode === 0,
|
|
113
|
+
files,
|
|
114
|
+
total: files.length,
|
|
115
|
+
};
|
|
39
116
|
return compactDualOutput(data, result.stdout, formatFormatCheck, compactFormatCheckMap, formatFormatCheckCompact, compact === false);
|
|
40
117
|
});
|
|
41
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-check.js","sourceRoot":"","sources":["../../src/tools/format-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"format-check.js","sourceRoot":"","sources":["../../src/tools/format-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hadolint.d.ts","sourceRoot":"","sources":["../../src/tools/hadolint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"hadolint.d.ts","sourceRoot":"","sources":["../../src/tools/hadolint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA0KrD"}
|
package/dist/tools/hadolint.js
CHANGED
|
@@ -8,13 +8,9 @@ import { LintResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerHadolintTool(server) {
|
|
9
9
|
server.registerTool("hadolint", {
|
|
10
10
|
title: "Hadolint",
|
|
11
|
-
description: "Runs Hadolint (Dockerfile linter) and returns structured diagnostics (file, line, rule, severity, message).
|
|
11
|
+
description: "Runs Hadolint (Dockerfile linter) and returns structured diagnostics (file, line, rule, severity, message).",
|
|
12
12
|
inputSchema: {
|
|
13
|
-
path: z
|
|
14
|
-
.string()
|
|
15
|
-
.max(INPUT_LIMITS.PATH_MAX)
|
|
16
|
-
.optional()
|
|
17
|
-
.describe("Project root path (default: cwd)"),
|
|
13
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
|
|
18
14
|
patterns: z
|
|
19
15
|
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
20
16
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
@@ -31,14 +27,53 @@ export function registerHadolintTool(server) {
|
|
|
31
27
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
32
28
|
.optional()
|
|
33
29
|
.describe("Rule codes to ignore (e.g., ['DL3008', 'DL3013'])"),
|
|
34
|
-
|
|
30
|
+
failureThreshold: z
|
|
31
|
+
.enum(["error", "warning", "info", "style", "ignore", "none"])
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Minimum severity to cause a non-zero exit code (maps to --failure-threshold)"),
|
|
34
|
+
noFail: z
|
|
35
35
|
.boolean()
|
|
36
36
|
.optional()
|
|
37
|
-
.
|
|
38
|
-
|
|
37
|
+
.describe("Always exit with 0 for informational-only runs (maps to --no-fail)"),
|
|
38
|
+
strictLabels: z
|
|
39
|
+
.boolean()
|
|
40
|
+
.optional()
|
|
41
|
+
.describe("Enforce strict label schema (maps to --strict-labels)"),
|
|
42
|
+
verbose: z.boolean().optional().describe("Enable verbose output (maps to --verbose)"),
|
|
43
|
+
config: z
|
|
44
|
+
.string()
|
|
45
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Path to Hadolint configuration file (maps to --config)"),
|
|
48
|
+
requireLabel: z
|
|
49
|
+
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
50
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Required labels in Dockerfiles, e.g. ['maintainer:text'] (maps to --require-label)"),
|
|
53
|
+
shell: z
|
|
54
|
+
.string()
|
|
55
|
+
.max(INPUT_LIMITS.STRING_MAX)
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Default shell for RUN instruction linting, e.g. '/bin/bash' (maps to --shell)"),
|
|
58
|
+
errorRules: z
|
|
59
|
+
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
60
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Rule codes to treat as errors (maps to --error)"),
|
|
63
|
+
warningRules: z
|
|
64
|
+
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
65
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("Rule codes to treat as warnings (maps to --warning)"),
|
|
68
|
+
infoRules: z
|
|
69
|
+
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
70
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Rule codes to treat as info (maps to --info)"),
|
|
73
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
39
74
|
},
|
|
40
75
|
outputSchema: LintResultSchema,
|
|
41
|
-
}, async ({ path, patterns, trustedRegistries, ignoreRules, compact }) => {
|
|
76
|
+
}, async ({ path, patterns, trustedRegistries, ignoreRules, failureThreshold, noFail, strictLabels, verbose, config, requireLabel, shell, errorRules, warningRules, infoRules, compact, }) => {
|
|
42
77
|
const cwd = path || process.cwd();
|
|
43
78
|
for (const p of patterns ?? []) {
|
|
44
79
|
assertNoFlagInjection(p, "patterns");
|
|
@@ -56,6 +91,46 @@ export function registerHadolintTool(server) {
|
|
|
56
91
|
args.push(`--ignore=${rule}`);
|
|
57
92
|
}
|
|
58
93
|
}
|
|
94
|
+
if (failureThreshold)
|
|
95
|
+
args.push(`--failure-threshold=${failureThreshold}`);
|
|
96
|
+
if (noFail)
|
|
97
|
+
args.push("--no-fail");
|
|
98
|
+
if (strictLabels)
|
|
99
|
+
args.push("--strict-labels");
|
|
100
|
+
if (verbose)
|
|
101
|
+
args.push("--verbose");
|
|
102
|
+
if (config) {
|
|
103
|
+
assertNoFlagInjection(config, "config");
|
|
104
|
+
args.push(`--config=${config}`);
|
|
105
|
+
}
|
|
106
|
+
if (requireLabel) {
|
|
107
|
+
for (const label of requireLabel) {
|
|
108
|
+
assertNoFlagInjection(label, "requireLabel");
|
|
109
|
+
args.push(`--require-label=${label}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (shell) {
|
|
113
|
+
assertNoFlagInjection(shell, "shell");
|
|
114
|
+
args.push(`--shell=${shell}`);
|
|
115
|
+
}
|
|
116
|
+
if (errorRules) {
|
|
117
|
+
for (const rule of errorRules) {
|
|
118
|
+
assertNoFlagInjection(rule, "errorRules");
|
|
119
|
+
args.push(`--error=${rule}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (warningRules) {
|
|
123
|
+
for (const rule of warningRules) {
|
|
124
|
+
assertNoFlagInjection(rule, "warningRules");
|
|
125
|
+
args.push(`--warning=${rule}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (infoRules) {
|
|
129
|
+
for (const rule of infoRules) {
|
|
130
|
+
assertNoFlagInjection(rule, "infoRules");
|
|
131
|
+
args.push(`--info=${rule}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
59
134
|
args.push(...(patterns || ["Dockerfile"]));
|
|
60
135
|
const result = await hadolintCmd(args, cwd);
|
|
61
136
|
const data = parseHadolintJson(result.stdout);
|