Merge pull request #58 from github/joshmgross/deprecated-values
Show deprecation status when suggesting action inputs
This commit is contained in:
@@ -44,7 +44,8 @@ export async function getActionInputValues(
|
|||||||
return Object.entries(inputs).map(([inputName, input]) => {
|
return Object.entries(inputs).map(([inputName, input]) => {
|
||||||
return {
|
return {
|
||||||
label: inputName,
|
label: inputName,
|
||||||
description: input.description
|
description: input.description,
|
||||||
|
deprecated: input.deprecationMessage !== undefined
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -100,14 +101,6 @@ type ActionMetadata = {
|
|||||||
inputs?: ActionInputs;
|
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
|
// https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions
|
||||||
async function parseActionMetadata(content: string): Promise<ActionInputs> {
|
async function parseActionMetadata(content: string): Promise<ActionInputs> {
|
||||||
const metadata: ActionMetadata = parse(content);
|
const metadata: ActionMetadata = parse(content);
|
||||||
|
|||||||
@@ -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 {TokenType} from "@github/actions-workflow-parser/templates/tokens/types";
|
||||||
import {File} from "@github/actions-workflow-parser/workflows/file";
|
import {File} from "@github/actions-workflow-parser/workflows/file";
|
||||||
import {Position, TextDocument} from "vscode-languageserver-textdocument";
|
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 {ContextProviderConfig} from "./context-providers/config";
|
||||||
import {getContext, Mode} from "./context-providers/default";
|
import {getContext, Mode} from "./context-providers/default";
|
||||||
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
import {getWorkflowContext, WorkflowContext} from "./context/workflow-context";
|
||||||
@@ -106,11 +106,12 @@ export async function complete(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return values.map(value => {
|
return values.map(value => {
|
||||||
const item = CompletionItem.create(value.label);
|
const item: CompletionItem = {
|
||||||
item.detail = value.description;
|
label: value.label,
|
||||||
if (replaceRange) {
|
detail: value.description,
|
||||||
item.textEdit = TextEdit.replace(replaceRange, value.label);
|
tags: value.deprecated ? [CompletionItemTag.Deprecated] : undefined,
|
||||||
}
|
textEdit: replaceRange ? TextEdit.replace(replaceRange, value.label) : undefined
|
||||||
|
};
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
@@ -132,7 +133,8 @@ async function getValues(
|
|||||||
// Use the value providers from the parent if the current key is null
|
// Use the value providers from the parent if the current key is null
|
||||||
const valueProviderToken = keyToken || parent;
|
const valueProviderToken = keyToken || parent;
|
||||||
|
|
||||||
const customValueProvider = valueProviderToken?.definition?.key && valueProviderConfig?.[valueProviderToken.definition.key]
|
const customValueProvider =
|
||||||
|
valueProviderToken?.definition?.key && valueProviderConfig?.[valueProviderToken.definition.key];
|
||||||
if (customValueProvider) {
|
if (customValueProvider) {
|
||||||
const customValues = await customValueProvider.get(workflowContext);
|
const customValues = await customValueProvider.get(workflowContext);
|
||||||
if (customValues) {
|
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) {
|
if (defaultValueProvider) {
|
||||||
const values = await defaultValueProvider.get(workflowContext);
|
const values = await defaultValueProvider.get(workflowContext);
|
||||||
return filterAndSortCompletionOptions(values, existingValues);
|
return filterAndSortCompletionOptions(values, existingValues);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import {WorkflowContext} from "../context/workflow-context";
|
|||||||
export interface Value {
|
export interface Value {
|
||||||
label: string;
|
label: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
|
deprecated?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum ValueProviderKind {
|
export enum ValueProviderKind {
|
||||||
|
|||||||
Reference in New Issue
Block a user