From 230a4e6760b44de7006da925293dc588c167bba8 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 18 Nov 2022 08:16:31 -0800 Subject: [PATCH 1/5] Auto-completion for string definitions --- actions-languageservice/src/complete.test.ts | 35 ++++++++++++++++++- .../src/value-providers/default.ts | 16 +++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/actions-languageservice/src/complete.test.ts b/actions-languageservice/src/complete.test.ts index 08d73e7..bf10a08 100644 --- a/actions-languageservice/src/complete.test.ts +++ b/actions-languageservice/src/complete.test.ts @@ -25,7 +25,7 @@ describe("completion", () => { const input = `on: push jobs: build: - runs-on: [self-hosted, u|]`; + runs-on: [self-hosted, u|]`; const result = await complete(...getPositionFromCursor(input)); expect(result).not.toBeUndefined(); @@ -57,6 +57,39 @@ jobs: expect(result.length).toEqual(20); }); + it("string definition completion in sequence", async () => { + const input = `on: + release: + types: + - |`; + const result = await complete(...getPositionFromCursor(input)); + expect(result.map(x => x.label)).toEqual([ + "created", + "deleted", + "edited", + "prereleased", + "published", + "released", + "unpublished" + ]); + }); + + it("string definition completion", async () => { + const input = `on: + release: + types: |`; + const result = await complete(...getPositionFromCursor(input)); + expect(result.map(x => x.label)).toEqual([ + "created", + "deleted", + "edited", + "prereleased", + "published", + "released", + "unpublished" + ]); + }); + it("map keys filter out existing values", async () => { const input = `on: push jobs: diff --git a/actions-languageservice/src/value-providers/default.ts b/actions-languageservice/src/value-providers/default.ts index 342b479..f0398b2 100644 --- a/actions-languageservice/src/value-providers/default.ts +++ b/actions-languageservice/src/value-providers/default.ts @@ -1,7 +1,8 @@ -import {Definition} from "@github/actions-workflow-parser/templates/schema/definition"; import {BooleanDefinition} from "@github/actions-workflow-parser/templates/schema/boolean-definition"; +import {Definition} from "@github/actions-workflow-parser/templates/schema/definition"; import {MappingDefinition} from "@github/actions-workflow-parser/templates/schema/mapping-definition"; import {OneOfDefinition} from "@github/actions-workflow-parser/templates/schema/one-of-definition"; +import {StringDefinition} from "@github/actions-workflow-parser/templates/schema/string-definition"; import {getWorkflowSchema} from "@github/actions-workflow-parser/workflows/workflow-schema"; import {Value, ValueProvider} from "./config"; @@ -37,13 +38,22 @@ export function defaultValueProviders(): {[key: string]: ValueProvider} { function definitionValueProvider(key: string, definitions: {[key: string]: Definition}): ValueProvider | undefined { const def = definitions[key]; + if (def instanceof MappingDefinition) { return mappingValueProvider(def); - } else if (def instanceof OneOfDefinition) { + } + + if (def instanceof OneOfDefinition) { return oneOfValueProvider(def, definitions); - } else if (def instanceof BooleanDefinition) { + } + + if (def instanceof BooleanDefinition) { return () => stringsToValues(["true", "false"]); } + + if (def instanceof StringDefinition && def.constant) { + return () => stringsToValues([def.constant]); + } } function mappingValueProvider(mappingDefinition: MappingDefinition): ValueProvider { From 8846e69e761da3c65089163725faf84b5760db13 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 18 Nov 2022 09:30:41 -0800 Subject: [PATCH 2/5] Add `ubuntu-22.04` --- actions-languageservice/src/value-providers/default.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/actions-languageservice/src/value-providers/default.ts b/actions-languageservice/src/value-providers/default.ts index f0398b2..8fdc23c 100644 --- a/actions-languageservice/src/value-providers/default.ts +++ b/actions-languageservice/src/value-providers/default.ts @@ -22,6 +22,7 @@ export function defaultValueProviders(): {[key: string]: ValueProvider} { "runs-on": () => stringsToValues([ "ubuntu-latest", + "ubuntu-22.04", "ubuntu-18.04", "ubuntu-16.04", "windows-latest", From 44f807e9dd99245d8e05ce411d39c08ea4cb03d8 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 18 Nov 2022 09:33:05 -0800 Subject: [PATCH 3/5] Undo `"ubuntu-22.04",` --- actions-languageservice/src/value-providers/default.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/actions-languageservice/src/value-providers/default.ts b/actions-languageservice/src/value-providers/default.ts index 8fdc23c..f0398b2 100644 --- a/actions-languageservice/src/value-providers/default.ts +++ b/actions-languageservice/src/value-providers/default.ts @@ -22,7 +22,6 @@ export function defaultValueProviders(): {[key: string]: ValueProvider} { "runs-on": () => stringsToValues([ "ubuntu-latest", - "ubuntu-22.04", "ubuntu-18.04", "ubuntu-16.04", "windows-latest", From 8c83eb1bad5ff77cc231f838e936f4c3e695207e Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 18 Nov 2022 09:55:31 -0800 Subject: [PATCH 4/5] Better jest output on actions --- actions-languageservice/jest.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/actions-languageservice/jest.config.js b/actions-languageservice/jest.config.js index 58f936b..f8c93bb 100644 --- a/actions-languageservice/jest.config.js +++ b/actions-languageservice/jest.config.js @@ -12,5 +12,6 @@ export default { }, ], }, - moduleFileExtensions: ["ts", "js"] + moduleFileExtensions: ["ts", "js"], + reporters: ["default", "github-actions"] }; From ca0c1b6c747198a8bdbc19967e4dbb6252efbdb2 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 18 Nov 2022 10:06:59 -0800 Subject: [PATCH 5/5] Consume new version of the parser --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29b5216..60c8303 100644 --- a/package-lock.json +++ b/package-lock.json @@ -665,9 +665,9 @@ "link": true }, "node_modules/@github/actions-workflow-parser": { - "version": "0.0.12", - "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.12/b7b753fe96c1be36cc6f7952be76301ee3a10f12", - "integrity": "sha512-tPtIiRpCilAGUygpCCBv7yEamw9/Te0SF1lBN5BljxLE0atb34bLMGR3yyKjE+S3R3xUf3jmNNcTiGRLIqnAfw==", + "version": "0.0.13", + "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.13/ff0fdf35ecf25145c56cb7d6d6b93b5a6b0774de", + "integrity": "sha512-kQGTQZUrBqK0qK2AlSrljyhzjPh/LPcX+cg6Tc3ZmQmoLlqgIm9bN30iC5JDKzsY7j3otedQQ2YfniFmCRBWRA==", "license": "MIT", "dependencies": { "@github/actions-expressions": "*", @@ -10927,9 +10927,9 @@ } }, "@github/actions-workflow-parser": { - "version": "0.0.12", - "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.12/b7b753fe96c1be36cc6f7952be76301ee3a10f12", - "integrity": "sha512-tPtIiRpCilAGUygpCCBv7yEamw9/Te0SF1lBN5BljxLE0atb34bLMGR3yyKjE+S3R3xUf3jmNNcTiGRLIqnAfw==", + "version": "0.0.13", + "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.13/ff0fdf35ecf25145c56cb7d6d6b93b5a6b0774de", + "integrity": "sha512-kQGTQZUrBqK0qK2AlSrljyhzjPh/LPcX+cg6Tc3ZmQmoLlqgIm9bN30iC5JDKzsY7j3otedQQ2YfniFmCRBWRA==", "requires": { "@github/actions-expressions": "*", "yaml": "^2.0.0-8"