From b0fda7d65c2cfb9a27fc45a5a059abd22610c903 Mon Sep 17 00:00:00 2001 From: Beth Brennan <34719884+elbrenn@users.noreply.github.com> Date: Wed, 16 Nov 2022 19:21:36 +0000 Subject: [PATCH] Get custom values for environment --- actions-languageserver/src/on-completion.ts | 18 ++++++++++---- .../src/value-providers/job-environtment.ts | 24 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 actions-languageserver/src/value-providers/job-environtment.ts diff --git a/actions-languageserver/src/on-completion.ts b/actions-languageserver/src/on-completion.ts index 892646a..6dfce22 100644 --- a/actions-languageserver/src/on-completion.ts +++ b/actions-languageserver/src/on-completion.ts @@ -7,6 +7,7 @@ import { Octokit } from "@octokit/rest"; import { CompletionItem, DocumentUri, Position } from "vscode-languageserver"; import { TextDocument } from "vscode-languageserver-textdocument"; import { RepositoryContext } from "./initializationOptions"; +import { getEnvironments } from "./value-providers/job-environtment"; import { getRunnerLabels } from "./value-providers/runs-on"; export async function onCompletion( @@ -38,10 +39,17 @@ async function getCustomValues( if (!repo) { return; } - if (key === "runs-on") { - const octokit = new Octokit({ - auth: sessionToken, - }); - return await getRunnerLabels(octokit, repo.owner, repo.name); + + const octokit = new Octokit({ + auth: sessionToken, + }); + + switch (key) { + case "job-environment": { + return await getEnvironments(octokit, repo.owner, repo.name); + } + case "runs-on": { + return await getRunnerLabels(octokit, repo.owner, repo.name); + } } } diff --git a/actions-languageserver/src/value-providers/job-environtment.ts b/actions-languageserver/src/value-providers/job-environtment.ts new file mode 100644 index 0000000..8a6b4b0 --- /dev/null +++ b/actions-languageserver/src/value-providers/job-environtment.ts @@ -0,0 +1,24 @@ +import { Value } from "@github/actions-languageservice/value-providers/config"; +import { Octokit } from "@octokit/rest"; + +export async function getEnvironments( + client: Octokit, + owner: string, + name: string +): Promise { + let environments: string[] = []; + try { + const response = await client.repos.getAllEnvironments({ + owner, + repo: name, + }); + + if (response.data.environments) { + environments = response.data.environments.map((env) => env.name); + } + } catch (e) { + console.log(e); + } + + return Array.from(environments).map((e) => ({ label: e })); +}