diff --git a/actions-languageserver/src/value-providers/action-inputs.ts b/actions-languageserver/src/value-providers/action-inputs.ts index 61ff70a..63d3e94 100644 --- a/actions-languageserver/src/value-providers/action-inputs.ts +++ b/actions-languageserver/src/value-providers/action-inputs.ts @@ -44,7 +44,8 @@ export async function getActionInputValues( return Object.entries(inputs).map(([inputName, input]) => { return { label: inputName, - description: input.description + description: input.description, + deprecated: input.deprecationMessage !== undefined }; }); } @@ -100,14 +101,6 @@ type ActionMetadata = { inputs?: ActionInputs; }; -// https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs -type ActionInput = { - description: string; - required?: boolean; - default?: string; - deprecationMessage?: string; -}; - // https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions async function parseActionMetadata(content: string): Promise { const metadata: ActionMetadata = parse(content); diff --git a/actions-languageservice/src/complete.ts b/actions-languageservice/src/complete.ts index 16b50dc..cc714ab 100644 --- a/actions-languageservice/src/complete.ts +++ b/actions-languageservice/src/complete.ts @@ -9,7 +9,7 @@ import {MappingToken} from "@github/actions-workflow-parser/templates/tokens/map import {TokenType} from "@github/actions-workflow-parser/templates/tokens/types"; import {File} from "@github/actions-workflow-parser/workflows/file"; import {Position, TextDocument} from "vscode-languageserver-textdocument"; -import {CompletionItem, Range, TextEdit} from "vscode-languageserver-types"; +import {CompletionItem, CompletionItemTag, Range, TextEdit} from "vscode-languageserver-types"; import {ContextProviderConfig} from "./context-providers/config"; import {getContext, Mode} from "./context-providers/default"; import {getWorkflowContext, WorkflowContext} from "./context/workflow-context"; @@ -106,11 +106,12 @@ export async function complete( } return values.map(value => { - const item = CompletionItem.create(value.label); - item.detail = value.description; - if (replaceRange) { - item.textEdit = TextEdit.replace(replaceRange, value.label); - } + const item: CompletionItem = { + label: value.label, + detail: value.description, + tags: value.deprecated ? [CompletionItemTag.Deprecated] : undefined, + textEdit: replaceRange ? TextEdit.replace(replaceRange, value.label) : undefined + }; return item; }); @@ -132,7 +133,8 @@ async function getValues( // Use the value providers from the parent if the current key is null const valueProviderToken = keyToken || parent; - const customValueProvider = valueProviderToken?.definition?.key && valueProviderConfig?.[valueProviderToken.definition.key] + const customValueProvider = + valueProviderToken?.definition?.key && valueProviderConfig?.[valueProviderToken.definition.key]; if (customValueProvider) { const customValues = await customValueProvider.get(workflowContext); if (customValues) { @@ -140,7 +142,8 @@ async function getValues( } } - const defaultValueProvider = valueProviderToken?.definition?.key && defaultValueProviders[valueProviderToken.definition.key] + const defaultValueProvider = + valueProviderToken?.definition?.key && defaultValueProviders[valueProviderToken.definition.key]; if (defaultValueProvider) { const values = await defaultValueProvider.get(workflowContext); return filterAndSortCompletionOptions(values, existingValues); diff --git a/actions-languageservice/src/value-providers/config.ts b/actions-languageservice/src/value-providers/config.ts index 34b7337..725ad4c 100644 --- a/actions-languageservice/src/value-providers/config.ts +++ b/actions-languageservice/src/value-providers/config.ts @@ -3,6 +3,7 @@ import {WorkflowContext} from "../context/workflow-context"; export interface Value { label: string; description?: string; + deprecated?: boolean; } export enum ValueProviderKind {