From db22088ab2ebc98b7d895ca1b9ec4ba9ebd9d9c9 Mon Sep 17 00:00:00 2001 From: Beth Brennan Date: Mon, 12 Dec 2022 19:06:08 -0500 Subject: [PATCH 1/2] Add basic github context provider --- .../src/complete.expressions.test.ts | 19 +++++++- .../src/context-providers/default.ts | 22 +++++---- .../src/context-providers/github.ts | 47 +++++++++++++++++++ 3 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 actions-languageservice/src/context-providers/github.ts diff --git a/actions-languageservice/src/complete.expressions.test.ts b/actions-languageservice/src/complete.expressions.test.ts index a32c9dd..6af1866 100644 --- a/actions-languageservice/src/complete.expressions.test.ts +++ b/actions-languageservice/src/complete.expressions.test.ts @@ -36,7 +36,7 @@ describe("expressions", () => { describe("top-level auto-complete", () => { it("single region", async () => { const input = "run-name: ${{ | }}"; - const result = await complete(...getPositionFromCursor(input), undefined, contextProviderConfig); + const result = await complete(...getPositionFromCursor(input), undefined, undefined); expect(result.map(x => x.label)).toEqual([ "github", @@ -320,6 +320,23 @@ jobs: expect(result).toEqual([]); }); + it("github context includes expected keys", async () => { + const input = ` +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: echo \${{ github.| }} + `; + + const result = await complete(...getPositionFromCursor(input), undefined, undefined); + + expect(result.map(x => x.label)).toContain("actor"); + }); + describe("steps context", () => { it("includes defined step IDs", async () => { const input = ` diff --git a/actions-languageservice/src/context-providers/default.ts b/actions-languageservice/src/context-providers/default.ts index ba83a74..5893c49 100644 --- a/actions-languageservice/src/context-providers/default.ts +++ b/actions-languageservice/src/context-providers/default.ts @@ -2,6 +2,7 @@ import {data} from "@github/actions-expressions"; import {Kind} from "@github/actions-expressions/data/expressiondata"; import {WorkflowContext} from "../context/workflow-context"; import {ContextProviderConfig} from "./config"; +import {getGithubContext} from "./github"; import {getInputsContext} from "./inputs"; import {getMatrixContext} from "./matrix"; import {getNeedsContext} from "./needs"; @@ -44,6 +45,18 @@ export async function getContext( function getDefaultContext(name: string, workflowContext: WorkflowContext, mode: Mode): ContextValue | undefined { switch (name) { + case "github": + return getGithubContext(); + + case "inputs": + return getInputsContext(workflowContext); + + case "matrix": + return getMatrixContext(workflowContext, mode); + + case "needs": + return getNeedsContext(workflowContext); + case "runner": return objectToDictionary({ os: "Linux", @@ -53,12 +66,6 @@ function getDefaultContext(name: string, workflowContext: WorkflowContext, mode: temp: "/home/runner/work/_temp" }); - case "needs": - return getNeedsContext(workflowContext); - - case "inputs": - return getInputsContext(workflowContext); - case "secrets": return objectToDictionary({GITHUB_TOKEN: "***"}); @@ -67,9 +74,6 @@ function getDefaultContext(name: string, workflowContext: WorkflowContext, mode: case "strategy": return getStrategyContext(workflowContext); - - case "matrix": - return getMatrixContext(workflowContext, mode); } return undefined; diff --git a/actions-languageservice/src/context-providers/github.ts b/actions-languageservice/src/context-providers/github.ts new file mode 100644 index 0000000..0422bb9 --- /dev/null +++ b/actions-languageservice/src/context-providers/github.ts @@ -0,0 +1,47 @@ +import {data} from "@github/actions-expressions"; + +export function getGithubContext(): data.Dictionary { + // https://docs.github.com/en/actions/learn-github-actions/contexts#github-context + const keys = [ + "action", + "action_path", + "action_ref", + "action_repository", + "action_status", + "actor", + "api_url", + "base_ref", + "env", + "event", + "event_name", + "event_path", + "graphql_url", + "head_ref", + "job", + "ref", + "ref_name", + "ref_protected", + "ref_type", + "path", + "repository", + "repository_owner", + "repositoryUrl", + "retention_days", + "run_id", + "run_number", + "run_attempt", + "secret_source", + "server_url", + "sha", + "token", + "triggering_actor", + "workflow", + "workspace" + ]; + + return new data.Dictionary( + ...keys.map(key => { + return {key, value: new data.Null()}; + }) + ); +} From d33bf583efaf011f177e6289d7006358a30da8d0 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 13 Dec 2022 00:37:12 +0000 Subject: [PATCH 2/2] v0.1.50 --- actions-languageserver/package.json | 4 ++-- actions-languageservice/package.json | 2 +- browser-playground/package.json | 4 ++-- lerna.json | 2 +- package-lock.json | 14 +++++++------- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/actions-languageserver/package.json b/actions-languageserver/package.json index 93b14b3..0f5dee8 100644 --- a/actions-languageserver/package.json +++ b/actions-languageserver/package.json @@ -1,6 +1,6 @@ { "name": "@github/actions-languageserver", - "version": "0.1.49", + "version": "0.1.50", "description": "Language server for GitHub Actions", "license": "MIT", "type": "module", @@ -38,7 +38,7 @@ "prettier-fix": "prettier --write ." }, "dependencies": { - "@github/actions-languageservice": "^0.1.49", + "@github/actions-languageservice": "^0.1.50", "@octokit/rest": "^19.0.5", "vscode-languageserver": "^8.0.2", "vscode-languageserver-textdocument": "^1.0.7" diff --git a/actions-languageservice/package.json b/actions-languageservice/package.json index 7d3ae7b..60a5ea5 100644 --- a/actions-languageservice/package.json +++ b/actions-languageservice/package.json @@ -1,6 +1,6 @@ { "name": "@github/actions-languageservice", - "version": "0.1.49", + "version": "0.1.50", "description": "Language service for GitHub Actions", "license": "MIT", "type": "module", diff --git a/browser-playground/package.json b/browser-playground/package.json index 55deb75..b619fa2 100644 --- a/browser-playground/package.json +++ b/browser-playground/package.json @@ -1,12 +1,12 @@ { "name": "browser-playground", - "version": "0.1.49", + "version": "0.1.50", "description": "", "private": true, "main": "index.js", "type": "module", "dependencies": { - "@github/actions-languageserver": "^0.1.49", + "@github/actions-languageserver": "^0.1.50", "monaco-editor-webpack-plugin": "^7.0.1", "monaco-editor-workers": "^0.34.2", "monaco-languageclient": "^4.0.3", diff --git a/lerna.json b/lerna.json index 217279f..7771b9c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "0.1.49" + "version": "0.1.50" } diff --git a/package-lock.json b/package-lock.json index 09e052b..82f7539 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,10 @@ }, "actions-languageserver": { "name": "@github/actions-languageserver", - "version": "0.1.49", + "version": "0.1.50", "license": "MIT", "dependencies": { - "@github/actions-languageservice": "^0.1.49", + "@github/actions-languageservice": "^0.1.50", "@octokit/rest": "^19.0.5", "vscode-languageserver": "^8.0.2", "vscode-languageserver-textdocument": "^1.0.7" @@ -38,7 +38,7 @@ }, "actions-languageservice": { "name": "@github/actions-languageservice", - "version": "0.1.49", + "version": "0.1.50", "license": "MIT", "dependencies": { "@github/actions-workflow-parser": "*", @@ -59,10 +59,10 @@ } }, "browser-playground": { - "version": "0.1.49", + "version": "0.1.50", "license": "MIT", "dependencies": { - "@github/actions-languageserver": "^0.1.49", + "@github/actions-languageserver": "^0.1.50", "monaco-editor-webpack-plugin": "^7.0.1", "monaco-editor-workers": "^0.34.2", "monaco-languageclient": "^4.0.3", @@ -13505,7 +13505,7 @@ "@github/actions-languageserver": { "version": "file:actions-languageserver", "requires": { - "@github/actions-languageservice": "^0.1.49", + "@github/actions-languageservice": "^0.1.50", "@octokit/rest": "^19.0.5", "@types/jest": "^29.0.3", "jest": "^29.0.3", @@ -16288,7 +16288,7 @@ "browser-playground": { "version": "file:browser-playground", "requires": { - "@github/actions-languageserver": "^0.1.49", + "@github/actions-languageserver": "^0.1.50", "css-loader": "^6.7.2", "monaco-editor-webpack-plugin": "^7.0.1", "monaco-editor-workers": "^0.34.2",