init/RegisterArgumentCompleters.ps1
using namespace System.Management.Automation $CommandNames = @( "Get-Task" "Get-TodoList" "New-Task" "New-TodoList" "Remove-Task" "Remove-TodoList" "Update-Task" ) $RegisterUserParameter = { param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParameters) $SavePath = Join-Path -Path $([Environment]::GetFolderPath("ApplicationData")) -ChildPath "Todo" $Users = Get-ChildItem -Path $SavePath -Filter "*.db" $Users | ForEach-Object { [CompletionResult]::new($_.BaseName) } } $CommandNames | ForEach-Object { Register-ArgumentCompleter -CommandName $_ -ParameterName User -ScriptBlock $RegisterUserParameter } $RegisterProjectParameter = { param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParameters) $Projects = Get-TodoList | Select-Object -Property Project -Unique $Projects | ForEach-Object { [CompletionResult]::new($_.Project) } } @("New-Task", "Update-Task") | ForEach-Object { Register-ArgumentCompleter -CommandName $_ -ParameterName Project -ScriptBlock $RegisterProjectParameter } |