Show deprecation status when suggesting action inputs

This commit is contained in:
Josh Gross
2022-12-14 13:07:26 -05:00
parent c884c397c1
commit 447bbfc032
3 changed files with 14 additions and 17 deletions
@@ -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<ActionInputs> {
const metadata: ActionMetadata = parse(content);
+11 -8
View File
@@ -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);
@@ -3,6 +3,7 @@ import {WorkflowContext} from "../context/workflow-context";
export interface Value {
label: string;
description?: string;
deprecated?: boolean;
}
export enum ValueProviderKind {