Libs/CustomAttributes/src/CompletionsAttribute.cs
using System;
using System.Collections.Generic; using System.Management.Automation; public class CompletionsAttribute : ArgumentCompleterAttribute { private static ScriptBlock _createScriptBlock(params string[] completions) { string text = "\"" + string.Join("\",\"", completions) + "\""; string code = $"param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParams);@({text}) -like \"$WordToComplete*\" | Foreach-Object {{ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) }}"; return ScriptBlock.Create(code); } public CompletionsAttribute(params string[] completions) : base(_createScriptBlock(completions)) { } } |