From c62ce55551383cdf1bfcec475e55616e8b0e7ad9 Mon Sep 17 00:00:00 2001 From: Christopher Schleiden Date: Fri, 2 Dec 2022 14:08:01 -0800 Subject: [PATCH] Support auto-completion in sequences --- actions-languageservice/src/complete.test.ts | 25 +++++++++++++++++++ .../src/value-providers/definition.ts | 8 ++++++ 2 files changed, 33 insertions(+) diff --git a/actions-languageservice/src/complete.test.ts b/actions-languageservice/src/complete.test.ts index 9d8124b..ddf3a2c 100644 --- a/actions-languageservice/src/complete.test.ts +++ b/actions-languageservice/src/complete.test.ts @@ -263,6 +263,31 @@ jobs: expect(result).toHaveLength(0); }); + it("empty step", async () => { + const input = `on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + - run: echo + - |`; + const result = await complete(...getPositionFromCursor(input)); + expect(result).toHaveLength(11); + expect(result.map(x => x.label)).toEqual([ + "continue-on-error", + "env", + "id", + "if", + "name", + "run", + "shell", + "timeout-minutes", + "uses", + "with", + "working-directory" + ]); + }); + it("loose mapping keys have no completion suggestions", async () => { const input = ` on: diff --git a/actions-languageservice/src/value-providers/definition.ts b/actions-languageservice/src/value-providers/definition.ts index ad3e5d2..65c5149 100644 --- a/actions-languageservice/src/value-providers/definition.ts +++ b/actions-languageservice/src/value-providers/definition.ts @@ -2,6 +2,7 @@ import {BooleanDefinition} from "@github/actions-workflow-parser/templates/schem 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 {SequenceDefinition} from "@github/actions-workflow-parser/templates/schema/sequence-definition"; import {StringDefinition} from "@github/actions-workflow-parser/templates/schema/string-definition"; import {getWorkflowSchema} from "@github/actions-workflow-parser/workflows/workflow-schema"; import {Value} from "./config"; @@ -26,6 +27,13 @@ export function definitionValues(def: Definition): Value[] { return stringsToValues([def.constant]); } + if (def instanceof SequenceDefinition) { + const itemDef = schema.getDefinition(def.itemType); + if (itemDef) { + return definitionValues(itemDef); + } + } + return []; }