diff --git a/actions-languageserver/src/on-completion.ts b/actions-languageserver/src/on-completion.ts index 892646a..6bb9e99 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-environment"; 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-environment.ts b/actions-languageserver/src/value-providers/job-environment.ts new file mode 100644 index 0000000..163503c --- /dev/null +++ b/actions-languageserver/src/value-providers/job-environment.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: "bob", + }); + + if (response.data.environments) { + environments = response.data.environments.map((env) => env.name); + } + } catch (e) { + console.log("Failure to retrieve environments: ", e); + } + + return Array.from(environments).map((env) => ({ label: env })); +} diff --git a/actions-languageserver/src/value-providers/runs-on.ts b/actions-languageserver/src/value-providers/runs-on.ts index 6daaf63..f4e12a1 100644 --- a/actions-languageserver/src/value-providers/runs-on.ts +++ b/actions-languageserver/src/value-providers/runs-on.ts @@ -34,7 +34,7 @@ export async function getRunnerLabels( } } } catch (e) { - console.log(e); + console.log("Failure to retrieve runner labels: ", e); } return Array.from(labels).map((label) => ({ label }));