Merge pull request #57 from github/joshmgross/use-def-allowed-context
Use the allowed context from the definition info
This commit is contained in:
@@ -14,7 +14,6 @@ import {ContextProviderConfig} from "./context-providers/config";
|
|||||||
import {getContext, Mode} from "./context-providers/default";
|
import {getContext, Mode} from "./context-providers/default";
|
||||||
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
||||||
import {nullTrace} from "./nulltrace";
|
import {nullTrace} from "./nulltrace";
|
||||||
import {getAllowedContext} from "./utils/allowed-context";
|
|
||||||
import {findToken} from "./utils/find-token";
|
import {findToken} from "./utils/find-token";
|
||||||
import {mapRange} from "./utils/range";
|
import {mapRange} from "./utils/range";
|
||||||
import {transform} from "./utils/transform";
|
import {transform} from "./utils/transform";
|
||||||
@@ -85,7 +84,7 @@ export async function complete(
|
|||||||
|
|
||||||
const expressionInput = (getExpressionInput(currentInput, relCharPos) || "").trim();
|
const expressionInput = (getExpressionInput(currentInput, relCharPos) || "").trim();
|
||||||
|
|
||||||
const allowedContext = getAllowedContext(token, parent);
|
const allowedContext = token.definitionInfo?.allowedContext || [];
|
||||||
const context = await getContext(allowedContext, contextProviderConfig, workflowContext, Mode.Completion);
|
const context = await getContext(allowedContext, contextProviderConfig, workflowContext, Mode.Completion);
|
||||||
|
|
||||||
return completeExpression(expressionInput, context, []);
|
return completeExpression(expressionInput, context, []);
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import {TemplateToken} from "@github/actions-workflow-parser/templates/tokens/template-token";
|
|
||||||
|
|
||||||
export function getAllowedContext(token: TemplateToken, parent: TemplateToken | null | undefined): string[] {
|
|
||||||
// Workaround for https://github.com/github/c2c-actions-experience/issues/6876
|
|
||||||
// Context is inherited from the parent
|
|
||||||
const allowedContext = new Set<string>();
|
|
||||||
for (const t of [token, parent]) {
|
|
||||||
if (t?.definition?.readerContext) {
|
|
||||||
for (const context of t.definition.readerContext) {
|
|
||||||
allowedContext.add(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Array.from(allowedContext);
|
|
||||||
}
|
|
||||||
@@ -24,7 +24,6 @@ import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
|||||||
import {AccessError, wrapDictionary} from "./expression-validation/error-dictionary";
|
import {AccessError, wrapDictionary} from "./expression-validation/error-dictionary";
|
||||||
import {error} from "./log";
|
import {error} from "./log";
|
||||||
import {nullTrace} from "./nulltrace";
|
import {nullTrace} from "./nulltrace";
|
||||||
import {getAllowedContext} from "./utils/allowed-context";
|
|
||||||
import {findToken} from "./utils/find-token";
|
import {findToken} from "./utils/find-token";
|
||||||
import {mapRange} from "./utils/range";
|
import {mapRange} from "./utils/range";
|
||||||
import {validateAction} from "./validate-action";
|
import {validateAction} from "./validate-action";
|
||||||
@@ -94,14 +93,12 @@ async function additionalValidations(
|
|||||||
const validationToken = key || parent || token;
|
const validationToken = key || parent || token;
|
||||||
const validationDefinition = validationToken.definition;
|
const validationDefinition = validationToken.definition;
|
||||||
|
|
||||||
const allowedContext = getAllowedContext(validationToken, parent);
|
|
||||||
|
|
||||||
// If this is an expression, validate it
|
// If this is an expression, validate it
|
||||||
if (isBasicExpression(token)) {
|
if (isBasicExpression(token)) {
|
||||||
await validateExpression(
|
await validateExpression(
|
||||||
diagnostics,
|
diagnostics,
|
||||||
token,
|
token,
|
||||||
allowedContext,
|
validationToken.definitionInfo?.allowedContext || [],
|
||||||
config?.contextProviderConfig,
|
config?.contextProviderConfig,
|
||||||
getProviderContext(documentUri, template, root, token)
|
getProviderContext(documentUri, template, root, token)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user