@actions/languageservice 0.3.36 → 0.3.38
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/dist/code-actions/code-actions.d.ts +12 -0
- package/dist/code-actions/code-actions.d.ts.map +1 -0
- package/dist/code-actions/code-actions.js +39 -0
- package/dist/code-actions/code-actions.js.map +1 -0
- package/dist/code-actions/quickfix/add-missing-inputs.d.ts +3 -0
- package/dist/code-actions/quickfix/add-missing-inputs.d.ts.map +1 -0
- package/dist/code-actions/quickfix/add-missing-inputs.js +192 -0
- package/dist/code-actions/quickfix/add-missing-inputs.js.map +1 -0
- package/dist/code-actions/quickfix/quickfix-providers.d.ts +4 -0
- package/dist/code-actions/quickfix/quickfix-providers.d.ts.map +1 -0
- package/dist/code-actions/quickfix/quickfix-providers.js +9 -0
- package/dist/code-actions/quickfix/quickfix-providers.js.map +1 -0
- package/dist/code-actions/tests/runner.d.ts +43 -0
- package/dist/code-actions/tests/runner.d.ts.map +1 -0
- package/dist/code-actions/tests/runner.js +170 -0
- package/dist/code-actions/tests/runner.js.map +1 -0
- package/dist/code-actions/types.d.ts +21 -0
- package/dist/code-actions/types.d.ts.map +1 -0
- package/dist/code-actions/types.js +2 -0
- package/dist/code-actions/types.js.map +1 -0
- package/dist/complete-action.js +35 -35
- package/dist/complete-action.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/validate-action-reference.d.ts +11 -0
- package/dist/validate-action-reference.d.ts.map +1 -1
- package/dist/validate-action-reference.js +14 -1
- package/dist/validate-action-reference.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FeatureFlags } from "@actions/expressions";
|
|
2
|
+
import { CodeAction, Diagnostic } from "vscode-languageserver-types";
|
|
3
|
+
export interface CodeActionParams {
|
|
4
|
+
uri: string;
|
|
5
|
+
documentContent: string;
|
|
6
|
+
diagnostics: Diagnostic[];
|
|
7
|
+
only?: string[];
|
|
8
|
+
featureFlags?: FeatureFlags;
|
|
9
|
+
}
|
|
10
|
+
export declare function getCodeActions(params: CodeActionParams): CodeAction[];
|
|
11
|
+
export type { CodeActionContext, CodeActionProvider } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=code-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-actions.d.ts","sourceRoot":"","sources":["../../src/code-actions/code-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,UAAU,EAAkB,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAInF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAuCrE;AAED,YAAY,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CodeActionKind } from "vscode-languageserver-types";
|
|
2
|
+
import { getQuickfixProviders } from "./quickfix/quickfix-providers.js";
|
|
3
|
+
export function getCodeActions(params) {
|
|
4
|
+
const actions = [];
|
|
5
|
+
const context = {
|
|
6
|
+
uri: params.uri,
|
|
7
|
+
documentContent: params.documentContent,
|
|
8
|
+
featureFlags: params.featureFlags
|
|
9
|
+
};
|
|
10
|
+
// Build providers map based on feature flags
|
|
11
|
+
const providersByKind = new Map([
|
|
12
|
+
[CodeActionKind.QuickFix, getQuickfixProviders(params.featureFlags)]
|
|
13
|
+
// [CodeActionKind.Refactor, getRefactorProviders(params.featureFlags)],
|
|
14
|
+
// [CodeActionKind.Source, getSourceProviders(params.featureFlags)],
|
|
15
|
+
// etc
|
|
16
|
+
]);
|
|
17
|
+
// Filter to requested kinds, or use all if none specified
|
|
18
|
+
const requestedKinds = params.only;
|
|
19
|
+
const kindsToCheck = requestedKinds
|
|
20
|
+
? [...providersByKind.keys()].filter(kind => requestedKinds.some(requested => kind.startsWith(requested)))
|
|
21
|
+
: [...providersByKind.keys()];
|
|
22
|
+
for (const diagnostic of params.diagnostics) {
|
|
23
|
+
for (const kind of kindsToCheck) {
|
|
24
|
+
const providers = providersByKind.get(kind) ?? [];
|
|
25
|
+
for (const provider of providers) {
|
|
26
|
+
if (provider.diagnosticCodes.includes(diagnostic.code)) {
|
|
27
|
+
const action = provider.createCodeAction(context, diagnostic);
|
|
28
|
+
if (action) {
|
|
29
|
+
action.kind = kind;
|
|
30
|
+
action.diagnostics = [diagnostic];
|
|
31
|
+
actions.push(action);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return actions;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=code-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-actions.js","sourceRoot":"","sources":["../../src/code-actions/code-actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,cAAc,EAAa,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAUtE,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAsB;QACjC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,eAAe,GAAsC,IAAI,GAAG,CAAC;QACjE,CAAC,cAAc,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACpE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM;KACP,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;IACnC,MAAM,YAAY,GAAG,cAAc;QACjC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE;QAC3C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC9D,IAAI,MAAM,EAAE;wBACV,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;wBACnB,MAAM,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;wBAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACtB;iBACF;aACF;SACF;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-missing-inputs.d.ts","sourceRoot":"","sources":["../../../src/code-actions/quickfix/add-missing-inputs.ts"],"names":[],"mappings":"AASA,OAAO,EAAoB,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAuBlE,eAAO,MAAM,wBAAwB,EAAE,kBA+BtC,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { isMapping } from "@actions/workflow-parser";
|
|
2
|
+
import { error } from "../../log.js";
|
|
3
|
+
import { findToken } from "../../utils/find-token.js";
|
|
4
|
+
import { getOrParseWorkflow } from "../../utils/workflow-cache.js";
|
|
5
|
+
import { DiagnosticCode } from "../../validate-action-reference.js";
|
|
6
|
+
export const addMissingInputsProvider = {
|
|
7
|
+
diagnosticCodes: [DiagnosticCode.MissingRequiredInputs],
|
|
8
|
+
createCodeAction(context, diagnostic) {
|
|
9
|
+
const data = diagnostic.data;
|
|
10
|
+
if (!data) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
// Parse the document to get the step token
|
|
14
|
+
const stepInfo = getStepInfo(context, diagnostic.range.start);
|
|
15
|
+
if (!stepInfo) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const edits = createInputEdits(data.missingInputs, stepInfo);
|
|
19
|
+
if (!edits || edits.length === 0) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const inputNames = data.missingInputs.map(i => i.name).join(", ");
|
|
23
|
+
return {
|
|
24
|
+
title: `Add missing input${data.missingInputs.length > 1 ? "s" : ""}: ${inputNames}`,
|
|
25
|
+
edit: {
|
|
26
|
+
changes: {
|
|
27
|
+
[context.uri]: edits
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Parse the document and extract step information needed for generating edits.
|
|
35
|
+
* Returns undefined if parsing fails or the step token cannot be found.
|
|
36
|
+
*/
|
|
37
|
+
function getStepInfo(context, diagnosticPosition) {
|
|
38
|
+
// Parse the document (uses cache if available from validation)
|
|
39
|
+
const file = { name: context.uri, content: context.documentContent };
|
|
40
|
+
const parseResult = getOrParseWorkflow(file, context.uri);
|
|
41
|
+
if (!parseResult.value) {
|
|
42
|
+
error("Failed to parse workflow for missing inputs quickfix");
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
// Find the token at the diagnostic position
|
|
46
|
+
const { path } = findToken(diagnosticPosition, parseResult.value);
|
|
47
|
+
// Walk up the path to find the step token (regular-step)
|
|
48
|
+
const stepToken = findStepInPath(path);
|
|
49
|
+
if (!stepToken) {
|
|
50
|
+
error("Could not find step token for missing inputs quickfix");
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return extractStepInfo(stepToken);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Find the step token (regular-step) in the token path
|
|
57
|
+
*/
|
|
58
|
+
function findStepInPath(path) {
|
|
59
|
+
// Walk backwards through path to find the step
|
|
60
|
+
for (let i = path.length - 1; i >= 0; i--) {
|
|
61
|
+
if (path[i].definition?.key === "regular-step" && isMapping(path[i])) {
|
|
62
|
+
return path[i];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Extract position and indentation info from a step token
|
|
69
|
+
*/
|
|
70
|
+
function extractStepInfo(stepToken) {
|
|
71
|
+
if (!stepToken.range) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
// Get the column of the first key in the step
|
|
75
|
+
let stepKeyColumn = stepToken.range.start.column;
|
|
76
|
+
if (stepToken.count > 0) {
|
|
77
|
+
const firstEntry = stepToken.get(0);
|
|
78
|
+
if (firstEntry?.key.range) {
|
|
79
|
+
stepKeyColumn = firstEntry.key.range.start.column;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Find the with: block if present
|
|
83
|
+
let withKey;
|
|
84
|
+
let withToken;
|
|
85
|
+
for (const { key, value } of stepToken) {
|
|
86
|
+
if (key.toString() === "with") {
|
|
87
|
+
withKey = key;
|
|
88
|
+
withToken = value;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Calculate indent size
|
|
93
|
+
let indentSize = 2; // Default
|
|
94
|
+
let withInfo;
|
|
95
|
+
if (withKey?.range && withToken?.range) {
|
|
96
|
+
// Has with: block - extract its info
|
|
97
|
+
const hasChildren = isMapping(withToken) && withToken.count > 0;
|
|
98
|
+
let firstChildColumn;
|
|
99
|
+
if (hasChildren) {
|
|
100
|
+
const firstChild = withToken.get(0);
|
|
101
|
+
if (firstChild?.key.range) {
|
|
102
|
+
firstChildColumn = firstChild.key.range.start.column;
|
|
103
|
+
// Detect indent size from with: children
|
|
104
|
+
indentSize = firstChildColumn - withKey.range.start.column;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
withInfo = {
|
|
108
|
+
keyColumn: withKey.range.start.column,
|
|
109
|
+
keyEndLine: withKey.range.end.line,
|
|
110
|
+
valueEndLine: withToken.range.end.line,
|
|
111
|
+
hasChildren,
|
|
112
|
+
firstChildColumn
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// No with: block - detect indent size using heuristics
|
|
117
|
+
// Based on the step key column position, estimate indent size
|
|
118
|
+
// 2-space indent files typically have step keys at column 7
|
|
119
|
+
// 4-space indent files typically have step keys at column 15
|
|
120
|
+
const zeroIndexedCol = stepKeyColumn - 1;
|
|
121
|
+
if (zeroIndexedCol >= 10) {
|
|
122
|
+
indentSize = 4;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
stepKeyColumn,
|
|
127
|
+
stepEndLine: stepToken.range.end.line,
|
|
128
|
+
indentSize,
|
|
129
|
+
withInfo
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Generate text edits to add missing inputs
|
|
134
|
+
*/
|
|
135
|
+
function createInputEdits(missingInputs, stepInfo) {
|
|
136
|
+
const formatInputLines = (indent) => missingInputs.map(input => {
|
|
137
|
+
const value = input.default ?? '""';
|
|
138
|
+
return `${indent}${input.name}: ${value}`;
|
|
139
|
+
});
|
|
140
|
+
if (stepInfo.withInfo) {
|
|
141
|
+
// `with:` exists - add inputs to existing block
|
|
142
|
+
const withIndent = stepInfo.withInfo.keyColumn - 1; // 0-indexed
|
|
143
|
+
const inputIndentSize = stepInfo.withInfo.firstChildColumn
|
|
144
|
+
? stepInfo.withInfo.firstChildColumn - stepInfo.withInfo.keyColumn
|
|
145
|
+
: stepInfo.indentSize;
|
|
146
|
+
const inputIndent = " ".repeat(withIndent + inputIndentSize);
|
|
147
|
+
const inputLines = formatInputLines(inputIndent);
|
|
148
|
+
// Calculate insert position
|
|
149
|
+
let insertLine;
|
|
150
|
+
if (stepInfo.withInfo.hasChildren) {
|
|
151
|
+
// Insert after the last child (at end of with: block)
|
|
152
|
+
// valueEndLine is 1-indexed, we want 0-indexed for Position
|
|
153
|
+
insertLine = stepInfo.withInfo.valueEndLine - 1;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Empty with: block - insert on the next line after with:
|
|
157
|
+
// keyEndLine is 1-indexed, convert to 0-indexed and go to next line
|
|
158
|
+
insertLine = stepInfo.withInfo.keyEndLine;
|
|
159
|
+
}
|
|
160
|
+
const insertPosition = {
|
|
161
|
+
line: insertLine,
|
|
162
|
+
character: 0
|
|
163
|
+
};
|
|
164
|
+
return [
|
|
165
|
+
{
|
|
166
|
+
range: { start: insertPosition, end: insertPosition },
|
|
167
|
+
newText: inputLines.map(line => line + "\n").join("")
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// No `with:` key - add `with:` at the same level as other step keys
|
|
173
|
+
const withKeyIndent = stepInfo.stepKeyColumn - 1; // 0-indexed (columns are 1-based)
|
|
174
|
+
const withIndent = " ".repeat(withKeyIndent);
|
|
175
|
+
const inputIndent = " ".repeat(withKeyIndent + stepInfo.indentSize);
|
|
176
|
+
const inputLines = formatInputLines(inputIndent);
|
|
177
|
+
const newText = `${withIndent}with:\n` + inputLines.map(line => `${line}\n`).join("");
|
|
178
|
+
// Insert at end of step
|
|
179
|
+
// stepEndLine is 1-indexed, we want 0-indexed and insert before the line after
|
|
180
|
+
const insertPosition = {
|
|
181
|
+
line: stepInfo.stepEndLine - 1,
|
|
182
|
+
character: 0
|
|
183
|
+
};
|
|
184
|
+
return [
|
|
185
|
+
{
|
|
186
|
+
range: { start: insertPosition, end: insertPosition },
|
|
187
|
+
newText
|
|
188
|
+
}
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=add-missing-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-missing-inputs.js","sourceRoot":"","sources":["../../../src/code-actions/quickfix/add-missing-inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickfix-providers.d.ts","sourceRoot":"","sources":["../../../src/code-actions/quickfix/quickfix-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAG/C,wBAAgB,oBAAoB,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,kBAAkB,EAAE,CAQtF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { addMissingInputsProvider } from "./add-missing-inputs.js";
|
|
2
|
+
export function getQuickfixProviders(featureFlags) {
|
|
3
|
+
const providers = [];
|
|
4
|
+
if (featureFlags?.isEnabled("missingInputsQuickfix")) {
|
|
5
|
+
providers.push(addMissingInputsProvider);
|
|
6
|
+
}
|
|
7
|
+
return providers;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=quickfix-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickfix-providers.js","sourceRoot":"","sources":["../../../src/code-actions/quickfix/quickfix-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,wBAAwB,EAAC,MAAM,yBAAyB,CAAC;AAEjE,MAAM,UAAU,oBAAoB,CAAC,YAA2B;IAC9D,MAAM,SAAS,GAAyB,EAAE,CAAC;IAE3C,IAAI,YAAY,EAAE,SAAS,CAAC,uBAAuB,CAAC,EAAE;QACpD,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;KAC1C;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TextEdit } from "vscode-languageserver-types";
|
|
2
|
+
import { ValidationConfig } from "../../validate.js";
|
|
3
|
+
export interface TestCase {
|
|
4
|
+
name: string;
|
|
5
|
+
inputPath: string;
|
|
6
|
+
goldenPath: string;
|
|
7
|
+
input: string;
|
|
8
|
+
golden: string;
|
|
9
|
+
markers: Marker[];
|
|
10
|
+
}
|
|
11
|
+
export interface Marker {
|
|
12
|
+
line: number;
|
|
13
|
+
message: string;
|
|
14
|
+
fix?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TestResult {
|
|
17
|
+
name: string;
|
|
18
|
+
passed: boolean;
|
|
19
|
+
error?: string;
|
|
20
|
+
expected?: string;
|
|
21
|
+
actual?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse markers from input file content
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseMarkers(content: string): Marker[];
|
|
27
|
+
/**
|
|
28
|
+
* Strip markers from content (for processing)
|
|
29
|
+
*/
|
|
30
|
+
export declare function stripMarkers(content: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Load all test cases from a testdata directory
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadTestCases(testdataDir: string): TestCase[];
|
|
35
|
+
/**
|
|
36
|
+
* Apply text edits to a document
|
|
37
|
+
*/
|
|
38
|
+
export declare function applyEdits(content: string, edits: TextEdit[]): string;
|
|
39
|
+
/**
|
|
40
|
+
* Run a single test case
|
|
41
|
+
*/
|
|
42
|
+
export declare function runTestCase(testCase: TestCase, validationConfig: ValidationConfig): Promise<TestResult>;
|
|
43
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/code-actions/tests/runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAGrD,OAAO,EAAW,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAM7D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiC7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CA4BrE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2F7G"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
4
|
+
import { FeatureFlags } from "@actions/expressions";
|
|
5
|
+
import { validate } from "../../validate.js";
|
|
6
|
+
import { getCodeActions } from "../code-actions.js";
|
|
7
|
+
// Marker pattern: # want "diagnostic message" fix="code-action-name"
|
|
8
|
+
const MARKER_PATTERN = /#\s*want\s+"([^"]+)"(?:\s+fix="([^"]+)")?/;
|
|
9
|
+
/**
|
|
10
|
+
* Parse markers from input file content
|
|
11
|
+
*/
|
|
12
|
+
export function parseMarkers(content) {
|
|
13
|
+
const lines = content.split("\n");
|
|
14
|
+
const markers = [];
|
|
15
|
+
for (let i = 0; i < lines.length; i++) {
|
|
16
|
+
const match = lines[i].match(MARKER_PATTERN);
|
|
17
|
+
if (match) {
|
|
18
|
+
markers.push({
|
|
19
|
+
line: i,
|
|
20
|
+
message: match[1],
|
|
21
|
+
fix: match[2]
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return markers;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Strip markers from content (for processing)
|
|
29
|
+
*/
|
|
30
|
+
export function stripMarkers(content) {
|
|
31
|
+
return content
|
|
32
|
+
.split("\n")
|
|
33
|
+
.map(line => line.replace(MARKER_PATTERN, "").trimEnd())
|
|
34
|
+
.join("\n");
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Load all test cases from a testdata directory
|
|
38
|
+
*/
|
|
39
|
+
export function loadTestCases(testdataDir) {
|
|
40
|
+
const testCases = [];
|
|
41
|
+
function walkDir(dir) {
|
|
42
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const fullPath = path.join(dir, entry.name);
|
|
45
|
+
if (entry.isDirectory()) {
|
|
46
|
+
walkDir(fullPath);
|
|
47
|
+
}
|
|
48
|
+
else if (entry.isFile() && entry.name.endsWith(".yml") && !entry.name.endsWith(".golden.yml")) {
|
|
49
|
+
const goldenPath = fullPath.replace(".yml", ".golden.yml");
|
|
50
|
+
if (fs.existsSync(goldenPath)) {
|
|
51
|
+
const input = fs.readFileSync(fullPath, "utf-8");
|
|
52
|
+
const golden = fs.readFileSync(goldenPath, "utf-8");
|
|
53
|
+
testCases.push({
|
|
54
|
+
name: path.relative(testdataDir, fullPath),
|
|
55
|
+
inputPath: fullPath,
|
|
56
|
+
goldenPath,
|
|
57
|
+
input,
|
|
58
|
+
golden,
|
|
59
|
+
markers: parseMarkers(input)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
walkDir(testdataDir);
|
|
66
|
+
return testCases;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Apply text edits to a document
|
|
70
|
+
*/
|
|
71
|
+
export function applyEdits(content, edits) {
|
|
72
|
+
// Sort edits in reverse order by position to apply from bottom to top
|
|
73
|
+
const sortedEdits = [...edits].sort((a, b) => {
|
|
74
|
+
if (b.range.start.line !== a.range.start.line) {
|
|
75
|
+
return b.range.start.line - a.range.start.line;
|
|
76
|
+
}
|
|
77
|
+
return b.range.start.character - a.range.start.character;
|
|
78
|
+
});
|
|
79
|
+
const lines = content.split("\n");
|
|
80
|
+
for (const edit of sortedEdits) {
|
|
81
|
+
const startLine = edit.range.start.line;
|
|
82
|
+
const startChar = edit.range.start.character;
|
|
83
|
+
const endLine = edit.range.end.line;
|
|
84
|
+
const endChar = edit.range.end.character;
|
|
85
|
+
const before = lines[startLine].slice(0, startChar);
|
|
86
|
+
const after = lines[endLine].slice(endChar);
|
|
87
|
+
const newLines = edit.newText.split("\n");
|
|
88
|
+
newLines[0] = before + newLines[0];
|
|
89
|
+
newLines[newLines.length - 1] = newLines[newLines.length - 1] + after;
|
|
90
|
+
lines.splice(startLine, endLine - startLine + 1, ...newLines);
|
|
91
|
+
}
|
|
92
|
+
return lines.join("\n");
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Run a single test case
|
|
96
|
+
*/
|
|
97
|
+
export async function runTestCase(testCase, validationConfig) {
|
|
98
|
+
const strippedInput = stripMarkers(testCase.input);
|
|
99
|
+
const document = TextDocument.create("file:///test.yml", "yaml", 1, strippedInput);
|
|
100
|
+
// 1. Validate and get diagnostics
|
|
101
|
+
const diagnostics = await validate(document, validationConfig);
|
|
102
|
+
// 2. Verify all expected diagnostics are present
|
|
103
|
+
const missingDiagnostics = [];
|
|
104
|
+
for (const marker of testCase.markers) {
|
|
105
|
+
const found = diagnostics.find(d => d.range.start.line === marker.line && d.message.includes(marker.message));
|
|
106
|
+
if (!found) {
|
|
107
|
+
missingDiagnostics.push(`line ${marker.line}: "${marker.message}"`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (missingDiagnostics.length > 0) {
|
|
111
|
+
return {
|
|
112
|
+
name: testCase.name,
|
|
113
|
+
passed: false,
|
|
114
|
+
error: `Missing expected diagnostics:\n ${missingDiagnostics.join("\n ")}\n\nActual diagnostics:\n ${diagnostics.map(d => `line ${d.range.start.line}: "${d.message}"`).join("\n ")}`
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// 3. Collect all edits from all matching code actions
|
|
118
|
+
const allEdits = [];
|
|
119
|
+
for (const marker of testCase.markers) {
|
|
120
|
+
if (!marker.fix) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const diagnostic = diagnostics.find(d => d.range.start.line === marker.line && d.message.includes(marker.message));
|
|
124
|
+
if (!diagnostic) {
|
|
125
|
+
continue; // Already reported above
|
|
126
|
+
}
|
|
127
|
+
const params = {
|
|
128
|
+
uri: document.uri,
|
|
129
|
+
documentContent: strippedInput,
|
|
130
|
+
diagnostics: [diagnostic],
|
|
131
|
+
featureFlags: new FeatureFlags({ all: true })
|
|
132
|
+
};
|
|
133
|
+
const actions = getCodeActions(params);
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- marker.fix is checked at the start of the loop
|
|
135
|
+
const matchingAction = actions.find(a => a.title.toLowerCase().includes(marker.fix.toLowerCase()));
|
|
136
|
+
if (!matchingAction) {
|
|
137
|
+
return {
|
|
138
|
+
name: testCase.name,
|
|
139
|
+
passed: false,
|
|
140
|
+
error: `Code action "${marker.fix}" not found for diagnostic on line ${marker.line}.\nAvailable actions: ${actions.map(a => a.title).join(", ") || "(none)"}`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (!matchingAction.edit?.changes) {
|
|
144
|
+
return {
|
|
145
|
+
name: testCase.name,
|
|
146
|
+
passed: false,
|
|
147
|
+
error: `Code action "${marker.fix}" has no edits`
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const edits = matchingAction.edit.changes[document.uri] || [];
|
|
151
|
+
allEdits.push(...edits);
|
|
152
|
+
}
|
|
153
|
+
// 4. Apply all edits and compare to golden file
|
|
154
|
+
const actualOutput = applyEdits(strippedInput, allEdits);
|
|
155
|
+
const expectedOutput = testCase.golden;
|
|
156
|
+
if (actualOutput.trim() !== expectedOutput.trim()) {
|
|
157
|
+
return {
|
|
158
|
+
name: testCase.name,
|
|
159
|
+
passed: false,
|
|
160
|
+
error: "Output does not match golden file",
|
|
161
|
+
expected: expectedOutput,
|
|
162
|
+
actual: actualOutput
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
name: testCase.name,
|
|
167
|
+
passed: true
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/code-actions/tests/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FeatureFlags } from "@actions/expressions";
|
|
2
|
+
import { CodeAction, Diagnostic } from "vscode-languageserver-types";
|
|
3
|
+
export interface CodeActionContext {
|
|
4
|
+
uri: string;
|
|
5
|
+
documentContent: string;
|
|
6
|
+
featureFlags?: FeatureFlags;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A provider that can produce a code action for a given diagnostic
|
|
10
|
+
*/
|
|
11
|
+
export interface CodeActionProvider {
|
|
12
|
+
/**
|
|
13
|
+
* The diagnostic codes this provider handles
|
|
14
|
+
*/
|
|
15
|
+
diagnosticCodes: (string | number | undefined)[];
|
|
16
|
+
/**
|
|
17
|
+
* Create a code action for the diagnostic, if applicable
|
|
18
|
+
*/
|
|
19
|
+
createCodeAction(context: CodeActionContext, diagnostic: Diagnostic): CodeAction | undefined;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/code-actions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,eAAe,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAEjD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;CAC9F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/code-actions/types.ts"],"names":[],"mappings":""}
|
package/dist/complete-action.js
CHANGED
|
@@ -76,12 +76,12 @@ runs:
|
|
|
76
76
|
# fs.appendFileSync(process.env.GITHUB_OUTPUT, \\\`greeting=\\\${greeting}\\\\n\\\`);
|
|
77
77
|
`;
|
|
78
78
|
const ACTION_SNIPPET_NODEJS_USING = `# For more on JavaScript actions (including @actions/toolkit), see:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
# https://docs.github.com/en/actions/sharing-automations/creating-actions/creating-a-javascript-action
|
|
80
|
+
using: node24
|
|
81
|
+
main: index.js
|
|
82
|
+
# Sample index.js (vanilla JS, no build required):
|
|
83
|
+
#
|
|
84
|
+
# console.log('Hello World');
|
|
85
85
|
`;
|
|
86
86
|
const ACTION_SNIPPET_COMPOSITE_FULL = `name: '\${1:Action Name}'
|
|
87
87
|
description: '\${2:What this action does}'
|
|
@@ -107,9 +107,9 @@ runs:
|
|
|
107
107
|
env:
|
|
108
108
|
INPUT_NAME: \\\${{ inputs.name }}
|
|
109
109
|
run: |
|
|
110
|
-
GREETING="Hello
|
|
111
|
-
echo "
|
|
112
|
-
echo "greeting
|
|
110
|
+
GREETING="Hello \\$INPUT_NAME"
|
|
111
|
+
echo "\\$GREETING"
|
|
112
|
+
echo "greeting=\\$GREETING" >> \\$GITHUB_OUTPUT
|
|
113
113
|
`;
|
|
114
114
|
const ACTION_SNIPPET_COMPOSITE_RUNS = `inputs:
|
|
115
115
|
name:
|
|
@@ -132,16 +132,16 @@ runs:
|
|
|
132
132
|
env:
|
|
133
133
|
INPUT_NAME: \\\${{ inputs.name }}
|
|
134
134
|
run: |
|
|
135
|
-
GREETING="Hello
|
|
136
|
-
echo "
|
|
137
|
-
echo "greeting
|
|
135
|
+
GREETING="Hello \\$INPUT_NAME"
|
|
136
|
+
echo "\\$GREETING"
|
|
137
|
+
echo "greeting=\\$GREETING" >> \\$GITHUB_OUTPUT
|
|
138
138
|
`;
|
|
139
139
|
const ACTION_SNIPPET_COMPOSITE_USING = `# For more on composite actions, see:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
# https://docs.github.com/en/actions/sharing-automations/creating-actions/creating-a-composite-action
|
|
141
|
+
using: composite
|
|
142
|
+
steps:
|
|
143
|
+
- shell: bash
|
|
144
|
+
run: echo "Hello World"
|
|
145
145
|
`;
|
|
146
146
|
const ACTION_SNIPPET_DOCKER_FULL = `name: '\${1:Action Name}'
|
|
147
147
|
description: '\${2:What this action does}'
|
|
@@ -168,9 +168,9 @@ runs:
|
|
|
168
168
|
args:
|
|
169
169
|
- -c
|
|
170
170
|
- |
|
|
171
|
-
GREETING="Hello
|
|
172
|
-
echo "
|
|
173
|
-
echo "greeting
|
|
171
|
+
GREETING="Hello \\$INPUT_NAME"
|
|
172
|
+
echo "\\$GREETING"
|
|
173
|
+
echo "greeting=\\$GREETING" >> \\$GITHUB_OUTPUT
|
|
174
174
|
`;
|
|
175
175
|
const ACTION_SNIPPET_DOCKER_RUNS = `inputs:
|
|
176
176
|
name:
|
|
@@ -194,19 +194,19 @@ runs:
|
|
|
194
194
|
args:
|
|
195
195
|
- -c
|
|
196
196
|
- |
|
|
197
|
-
GREETING="Hello
|
|
198
|
-
echo "
|
|
199
|
-
echo "greeting
|
|
197
|
+
GREETING="Hello \\$INPUT_NAME"
|
|
198
|
+
echo "\\$GREETING"
|
|
199
|
+
echo "greeting=\\$GREETING" >> \\$GITHUB_OUTPUT
|
|
200
200
|
`;
|
|
201
201
|
const ACTION_SNIPPET_DOCKER_USING = `# For more on Docker actions, see:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
202
|
+
# https://docs.github.com/en/actions/sharing-automations/creating-actions/creating-a-docker-container-action
|
|
203
|
+
using: docker
|
|
204
|
+
# 'docker://image:tag' uses pre-built image, 'Dockerfile' builds locally
|
|
205
|
+
image: '\${1:docker://alpine:3.20}'
|
|
206
|
+
entrypoint: '\${2:sh}'
|
|
207
|
+
args:
|
|
208
|
+
- -c
|
|
209
|
+
- echo "Hello World"
|
|
210
210
|
`;
|
|
211
211
|
/**
|
|
212
212
|
* Filters action.yml `runs:` completions based on the `using:` value.
|
|
@@ -262,7 +262,7 @@ export function filterActionRunsCompletions(values, path, root) {
|
|
|
262
262
|
// No using value set - show all keys but prioritize "using"
|
|
263
263
|
return values.map(v => {
|
|
264
264
|
if (v.label.toLowerCase() === "using") {
|
|
265
|
-
return { ...v, sortText: "
|
|
265
|
+
return { ...v, sortText: "9_using" }; // Sort after snippets (0_, 1_, 2_)
|
|
266
266
|
}
|
|
267
267
|
return v;
|
|
268
268
|
});
|
|
@@ -325,9 +325,9 @@ export function getActionScaffoldingSnippets(root, path, position) {
|
|
|
325
325
|
const isDirectlyInsideRuns = runsMappingIndex !== -1 && runsMappingIndex === path.length - 1;
|
|
326
326
|
if (isDirectlyInsideRuns) {
|
|
327
327
|
return [
|
|
328
|
-
createSnippetCompletion("Node.js Action", "Scaffold a Node.js action", ACTION_SNIPPET_NODEJS_USING, position, "
|
|
329
|
-
createSnippetCompletion("Composite Action", "Scaffold a composite action", ACTION_SNIPPET_COMPOSITE_USING, position, "
|
|
330
|
-
createSnippetCompletion("Docker Action", "Scaffold a Docker action", ACTION_SNIPPET_DOCKER_USING, position, "
|
|
328
|
+
createSnippetCompletion("Node.js Action", "Scaffold a Node.js action", ACTION_SNIPPET_NODEJS_USING, position, "0_nodejs"),
|
|
329
|
+
createSnippetCompletion("Composite Action", "Scaffold a composite action", ACTION_SNIPPET_COMPOSITE_USING, position, "1_composite"),
|
|
330
|
+
createSnippetCompletion("Docker Action", "Scaffold a Docker action", ACTION_SNIPPET_DOCKER_USING, position, "2_docker")
|
|
331
331
|
];
|
|
332
332
|
}
|
|
333
333
|
// Not at root or `runs` already exists?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-action.js","sourceRoot":"","sources":["../src/complete-action.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,yDAAyD,CAAC;AAErF,OAAO,EAAiB,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAG3G;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,YAAY;IACZ,gBAAgB;IAChB,QAAQ;IACR,iBAAiB;IACjB,SAAS;CACV,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;CAOnC,CAAC;AAEF,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BrC,CAAC;AAEF,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBrC,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;CASnC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAe,EAAE,IAAqB,EAAE,IAAmB;IACrG,sCAAsC;IACtC,IAAI,WAAqC,CAAC;IAC1C,IAAI,IAAI,YAAY,YAAY,EAAE;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,YAAY,YAAY,EAAE;gBAC5E,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;aACP;SACF;KACF;IACD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,MAAM,CAAC;KACf;IAED,gFAAgF;IAChF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,MAAM,CAAC;KACf;IAED,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;QAC3B,OAAO,MAAM,CAAC;KACf;IAED,0DAA0D;IAC1D,6EAA6E;IAC7E,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;KACf;IAED,4CAA4C;IAC5C,IAAI,UAA8B,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAC5C,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM;SACP;KACF;IAED,gCAAgC;IAChC,IAAI,WAAwB,CAAC;IAE7B,IAAI,CAAC,UAAU,EAAE;QACf,4DAA4D;QAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBACrC,OAAO,EAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"complete-action.js","sourceRoot":"","sources":["../src/complete-action.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export { getInlayHints } from "./inlay-hints.js";
|
|
|
6
6
|
export { Logger, LogLevel, registerLogger, setLogLevel } from "./log.js";
|
|
7
7
|
export { validate, ValidationConfig, ActionsMetadataProvider } from "./validate.js";
|
|
8
8
|
export { ValueProviderConfig, ValueProviderKind } from "./value-providers/config.js";
|
|
9
|
+
export { getCodeActions, CodeActionParams } from "./code-actions/code-actions.js";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,gCAAgC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,5 @@ export { getInlayHints } from "./inlay-hints.js";
|
|
|
5
5
|
export { LogLevel, registerLogger, setLogLevel } from "./log.js";
|
|
6
6
|
export { validate } from "./validate.js";
|
|
7
7
|
export { ValueProviderKind } from "./value-providers/config.js";
|
|
8
|
+
export { getCodeActions } from "./code-actions/code-actions.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAS,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAC,QAAQ,EAA4C,MAAM,eAAe,CAAC;AAClF,OAAO,EAAsB,iBAAiB,EAAC,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAS,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAC,QAAQ,EAA4C,MAAM,eAAe,CAAC;AAClF,OAAO,EAAsB,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAC,cAAc,EAAmB,MAAM,gCAAgC,CAAC"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { Step } from "@actions/workflow-parser/model/workflow-template";
|
|
2
2
|
import { TemplateToken } from "@actions/workflow-parser/templates/tokens/template-token";
|
|
3
3
|
import { Diagnostic } from "vscode-languageserver-types";
|
|
4
|
+
import { ActionReference } from "./action.js";
|
|
4
5
|
import { ValidationConfig } from "./validate.js";
|
|
6
|
+
export declare const DiagnosticCode: {
|
|
7
|
+
readonly MissingRequiredInputs: "missing-required-inputs";
|
|
8
|
+
};
|
|
9
|
+
export interface MissingInputsDiagnosticData {
|
|
10
|
+
action: ActionReference;
|
|
11
|
+
missingInputs: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
default?: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
5
16
|
/**
|
|
6
17
|
* Validates action references in workflow steps, checking for valid inputs and required inputs.
|
|
7
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-action-reference.d.ts","sourceRoot":"","sources":["../src/validate-action-reference.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,kDAAkD,CAAC;AAEtE,OAAO,EAAC,aAAa,EAAC,MAAM,0DAA0D,CAAC;AACvF,OAAO,EAAC,UAAU,EAAqB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-action-reference.d.ts","sourceRoot":"","sources":["../src/validate-action-reference.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,kDAAkD,CAAC;AAEtE,OAAO,EAAC,aAAa,EAAC,MAAM,0DAA0D,CAAC;AACvF,OAAO,EAAC,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAuB,MAAM,aAAa,CAAC;AAElE,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,eAAO,MAAM,cAAc;;CAEjB,CAAC;AAEX,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,UAAU,EAAE,EACzB,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,OAAO,CAAC,IAAI,CAAC,CAgGf"}
|
|
@@ -3,6 +3,9 @@ import { isActionStep } from "@actions/workflow-parser/model/type-guards";
|
|
|
3
3
|
import { DiagnosticSeverity } from "vscode-languageserver-types";
|
|
4
4
|
import { parseActionReference } from "./action.js";
|
|
5
5
|
import { mapRange } from "./utils/range.js";
|
|
6
|
+
export const DiagnosticCode = {
|
|
7
|
+
MissingRequiredInputs: "missing-required-inputs"
|
|
8
|
+
};
|
|
6
9
|
/**
|
|
7
10
|
* Validates action references in workflow steps, checking for valid inputs and required inputs.
|
|
8
11
|
*/
|
|
@@ -72,10 +75,20 @@ export async function validateActionReference(diagnostics, stepToken, step, conf
|
|
|
72
75
|
const message = missingRequiredInputs.length === 1
|
|
73
76
|
? `Missing required input \`${missingRequiredInputs[0][0]}\``
|
|
74
77
|
: `Missing required inputs: ${missingRequiredInputs.map(input => `\`${input[0]}\``).join(", ")}`;
|
|
78
|
+
// Build minimal diagnostic data - position calculation happens in the quickfix
|
|
79
|
+
const diagnosticData = {
|
|
80
|
+
action,
|
|
81
|
+
missingInputs: missingRequiredInputs.map(([name, input]) => ({
|
|
82
|
+
name,
|
|
83
|
+
default: input.default
|
|
84
|
+
}))
|
|
85
|
+
};
|
|
75
86
|
diagnostics.push({
|
|
76
87
|
severity: DiagnosticSeverity.Error,
|
|
77
88
|
range: mapRange((withKey || stepToken).range),
|
|
78
|
-
message: message
|
|
89
|
+
message: message,
|
|
90
|
+
code: DiagnosticCode.MissingRequiredInputs,
|
|
91
|
+
data: diagnosticData
|
|
79
92
|
});
|
|
80
93
|
}
|
|
81
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-action-reference.js","sourceRoot":"","sources":["../src/validate-action-reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAC,YAAY,EAAC,MAAM,4CAA4C,CAAC;AAIxE,OAAO,EAAa,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"validate-action-reference.js","sourceRoot":"","sources":["../src/validate-action-reference.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actions/languageservice",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.38",
|
|
4
4
|
"description": "Language service for GitHub Actions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"watch": "tsc --build tsconfig.build.json --watch"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@actions/expressions": "^0.3.
|
|
51
|
-
"@actions/workflow-parser": "^0.3.
|
|
50
|
+
"@actions/expressions": "^0.3.38",
|
|
51
|
+
"@actions/workflow-parser": "^0.3.38",
|
|
52
52
|
"vscode-languageserver-textdocument": "^1.0.7",
|
|
53
53
|
"vscode-languageserver-types": "^3.17.2",
|
|
54
54
|
"vscode-uri": "^3.0.8",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"ts-node": "^10.9.1",
|
|
77
77
|
"typescript": "^4.8.4"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "a8bfe742564ae5ccd57cead8f8d458480db13a01"
|
|
80
80
|
}
|