diff --git a/build.rs b/build.rs index 86a27d2..2459a91 100644 --- a/build.rs +++ b/build.rs @@ -34,4 +34,5 @@ fn main() { generate_to::(&mut app, &name, &outdir); generate_to::(&mut app, &name, &outdir); generate_to::(&mut app, &name, &outdir); + generate_to::(&mut app, &name, &outdir); } diff --git a/completions/_taskwarrior-tui.ps1 b/completions/_taskwarrior-tui.ps1 new file mode 100644 index 0000000..87a88ef --- /dev/null +++ b/completions/_taskwarrior-tui.ps1 @@ -0,0 +1,37 @@ + +using namespace System.Management.Automation +using namespace System.Management.Automation.Language + +Register-ArgumentCompleter -Native -CommandName 'taskwarrior-tui' -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + + $commandElements = $commandAst.CommandElements + $command = @( + 'taskwarrior-tui' + for ($i = 1; $i -lt $commandElements.Count; $i++) { + $element = $commandElements[$i] + if ($element -isnot [StringConstantExpressionAst] -or + $element.StringConstantType -ne [StringConstantType]::BareWord -or + $element.Value.StartsWith('-')) { + break + } + $element.Value + }) -join ';' + + $completions = @(switch ($command) { + 'taskwarrior-tui' { + [CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Sets a custom config file') + [CompletionResult]::new('--config', 'config', [CompletionResultType]::ParameterName, 'Sets a custom config file') + [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Sets default report') + [CompletionResult]::new('--report', 'report', [CompletionResultType]::ParameterName, 'Sets default report') + [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information') + [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information') + [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information') + [CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information') + break + } + }) + + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | + Sort-Object -Property ListItemText +}