completions/awk.ps1
|
<# # awk completion #> Import-Module NativeCommandCompleter.psm -ErrorAction SilentlyContinue $msg = data { ConvertFrom-StringData @' assign = Set variable VAR to value bignum = Force arbitrary precision arithmetic on numbers characters_as_bytes = Treat all input data as single-byte characters copyright = Print copyright information debug = Enable debugging dump_variables = Print a sorted list of global variables and their final values to file exec = Execute AWK program text field_separator = Use FS for the input field separator file = Read AWK program from file gen_pot = Generate .pot file on stdout help = Print usage information include = Load awk source library lint = Enable warnings about dubious or non-portable constructs lint_old = Warn about constructs that are not available in the original awk load = Load dynamic extension non_decimal_data = Recognize octal and hexadecimal values in input data no_optimize = Disable default optimizations optimize = Enable optimizations posix = Turn on full POSIX conformance pretty_print = Output a pretty-printed version of the program to file profile = Send profiling data to file re_interval = Allow interval expressions in regex matching sandbox = Run in sandbox mode, disabling system() and redirections source = Read AWK program from source-file traditional = Disable all gawk-specific extensions use_lc_numeric = Force use of locale's decimal point character version = Print version information '@ } Import-LocalizedData -BindingVariable localizedMessages -ErrorAction SilentlyContinue; foreach ($key in $localizedMessages.Keys) { $msg[$key] = $localizedMessages[$key] } Register-NativeCompleter -Name awk -Description 'pattern scanning and text processing language' -Parameters @( # Program specification New-ParamCompleter -ShortName f -LongName file -Description $msg.file -Type File -VariableName 'program-file' New-ParamCompleter -ShortName e -LongName source -Description $msg.source -Type Required -VariableName 'program-text' New-ParamCompleter -ShortName E -LongName exec -Description $msg.exec -Type File -VariableName 'program-file' # Variable assignment New-ParamCompleter -ShortName v -LongName assign -Description $msg.assign -Type Required -VariableName 'var=val' # Field separator New-ParamCompleter -ShortName F -LongName field-separator -Description $msg.field_separator -Type Required -VariableName 'fs' # Debugging and optimization New-ParamCompleter -ShortName D -LongName debug -Description $msg.debug -Type FlagOrValue -VariableName 'file' New-ParamCompleter -ShortName d -LongName dump-variables -Description $msg.dump_variables -Type FlagOrValue -VariableName 'file' New-ParamCompleter -ShortName o -LongName pretty-print -Description $msg.pretty_print -Type FlagOrValue -VariableName 'file' New-ParamCompleter -ShortName p -LongName profile -Description $msg.profile -Type FlagOrValue -VariableName 'file' New-ParamCompleter -ShortName O -LongName optimize -Description $msg.optimize New-ParamCompleter -ShortName s -LongName no-optimize -Description $msg.no_optimize # Warnings and compatibility New-ParamCompleter -ShortName L -LongName lint -Description $msg.lint -Type FlagOrValue -Arguments "fatal","invalid","no-ext" -VariableName 'value' New-ParamCompleter -ShortName t -LongName lint-old -Description $msg.lint_old New-ParamCompleter -ShortName c -LongName traditional -Description $msg.traditional New-ParamCompleter -ShortName P -LongName posix -Description $msg.posix # Extensions and libraries New-ParamCompleter -ShortName i -LongName include -Description $msg.include -Type File -VariableName 'source-file' New-ParamCompleter -ShortName l -LongName load -Description $msg.load -Type File -VariableName 'extension' # Data handling New-ParamCompleter -ShortName b -LongName characters-as-bytes -Description $msg.characters_as_bytes New-ParamCompleter -ShortName g -LongName gen-pot -Description $msg.gen_pot New-ParamCompleter -ShortName M -LongName bignum -Description $msg.bignum New-ParamCompleter -ShortName n -LongName non-decimal-data -Description $msg.non_decimal_data New-ParamCompleter -ShortName N -LongName use-lc-numeric -Description $msg.use_lc_numeric New-ParamCompleter -ShortName r -LongName re-interval -Description $msg.re_interval New-ParamCompleter -ShortName S -LongName sandbox -Description $msg.sandbox # Information New-ParamCompleter -ShortName C -LongName copyright -Description $msg.copyright New-ParamCompleter -ShortName h -LongName help -Description $msg.help New-ParamCompleter -ShortName V -LongName version -Description $msg.version ) -ArgumentCompleter { param([int] $position, [int] $argIndex) # First non-option argument should be the AWK program if -f was not used if ($argIndex -eq 0 -and -not $this.BoundParameters.ContainsKey('file') -and -not $this.BoundParameters.ContainsKey('source') -and -not $this.BoundParameters.ContainsKey('exec')) { if ([string]::IsNullOrEmpty($_)) { "program`tAWK program text" } else { $null } } } |