completions/apt-cache.ps1
|
<# # apt-cache completion #> Import-Module NativeCommandCompleter.psm -ErrorAction SilentlyContinue $msg = data { ConvertFrom-StringData @' apt_cache = query the APT cache gencaches = Build the source and package caches showpkg = Show some general information for a single package showsrc = Display source records stats = Show some basic statistics dump = Show the entire file in a terse form dumpavail = Print an available list to stdout unmet = Show unmet dependencies search = Search the package list for a regex pattern show = Show a readable record for the package depends = Show raw dependency information for a package rdepends = Show reverse dependency information for a package pkgnames = List the names of all packages in the system dotty = Generate package graphs for GraphViz xvcg = Generate package graphs for xvcg policy = Show policy settings madison = Display available versions of a package help = Display help and exit version = Display version and exit pkg_cache = Select the file to store the package cache src_cache = Select the file to store the source cache quiet = Quiet; produces output suitable for logging important = Print only important dependencies no_pre_depends = Do not print pre-depends no_depends = Do not print depends no_recommends = Do not print recommends no_suggests = Do not print suggests no_conflicts = Do not print conflicts no_breaks = Do not print breaks no_replaces = Do not print replaces no_enhances = Do not print enhances implicit = Print implicit dependencies full = Print full records when searching all_versions = Print full records for all available versions names_only = Only search on the package names all_names = Make pkgnames print all names recurse = Make depends and rdepends recursive installed = Limit the output of depends and rdepends to packages currently installed config_file = Configuration File option = Set a Configuration Option '@ } Import-LocalizedData -BindingVariable localizedMessages -ErrorAction SilentlyContinue; foreach ($key in $localizedMessages.Keys) { $msg[$key] = $localizedMessages[$key] } $packageCompleter = { if ([string]::IsNullOrWhiteSpace($wordToComplete) -or $wordToComplete.Length -lt 2) { return } $q = ".*${wordToComplete}.*" try { $table = @{} $pkg = "" apt-cache --no-generate show $q | ForEach-Object -Process { switch -Regex ($_) { '^Package: (.*)$' { $pkg = $Matches[1] } '^Description-?[a-zA-Z_]*: (.*)$' { if (-not [string]::IsNullOrEmpty($pkg) -and -not $table.ContainsKey($pkg)) { $table.Add($pkg, $Matches[1]); } } } # Limit to 200 items if ($table.Count -gt 200) { break; } } foreach ($k in $table.Keys) { "{0}`t{1}" -f $k, $table[$k] } } catch {} } Register-NativeCompleter -Name apt-cache -Description $msg.apt_cache -SubCommands @( New-CommandCompleter -Name gencaches -Description $msg.gencaches -NoFileCompletions New-CommandCompleter -Name showpkg -Description $msg.showpkg -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name showsrc -Description $msg.showsrc -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name stats -Description $msg.stats -NoFileCompletions New-CommandCompleter -Name dump -Description $msg.dump -NoFileCompletions New-CommandCompleter -Name dumpavail -Description $msg.dumpavail -NoFileCompletions New-CommandCompleter -Name unmet -Description $msg.unmet -NoFileCompletions New-CommandCompleter -Name search -Description $msg.search -NoFileCompletions New-CommandCompleter -Name show -Description $msg.show -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name depends -Description $msg.depends -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name rdepends -Description $msg.rdepends -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name pkgnames -Description $msg.pkgnames -NoFileCompletions New-CommandCompleter -Name dotty -Description $msg.dotty -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name xvcg -Description $msg.xvcg -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name policy -Description $msg.policy -NoFileCompletions -ArgumentCompleter $packageCompleter New-CommandCompleter -Name madison -Description $msg.madison -NoFileCompletions -ArgumentCompleter $packageCompleter ) -Parameters @( New-ParamCompleter -ShortName h -LongName help -Description $msg.help New-ParamCompleter -ShortName v -LongName version -Description $msg.version New-ParamCompleter -ShortName p -LongName pkg-cache -Description $msg.pkg_cache -Type File -VariableName 'FILE' New-ParamCompleter -ShortName s -LongName src-cache -Description $msg.src_cache -Type File -VariableName 'FILE' New-ParamCompleter -ShortName q -LongName quiet -Description $msg.quiet New-ParamCompleter -ShortName i -LongName important -Description $msg.important New-ParamCompleter -LongName no-pre-depends -Description $msg.no_pre_depends New-ParamCompleter -LongName no-depends -Description $msg.no_depends New-ParamCompleter -LongName no-recommends -Description $msg.no_recommends New-ParamCompleter -LongName no-suggests -Description $msg.no_suggests New-ParamCompleter -LongName no-conflicts -Description $msg.no_conflicts New-ParamCompleter -LongName no-breaks -Description $msg.no_breaks New-ParamCompleter -LongName no-replaces -Description $msg.no_replaces New-ParamCompleter -LongName no-enhances -Description $msg.no_enhances New-ParamCompleter -LongName implicit -Description $msg.implicit New-ParamCompleter -ShortName f -LongName full -Description $msg.full New-ParamCompleter -ShortName a -LongName all-versions -Description $msg.all_versions New-ParamCompleter -ShortName n -LongName names-only -Description $msg.names_only New-ParamCompleter -LongName all-names -Description $msg.all_names New-ParamCompleter -LongName recurse -Description $msg.recurse New-ParamCompleter -LongName installed -Description $msg.installed New-ParamCompleter -ShortName c -LongName config-file -Description $msg.config_file -Type File -VariableName 'FILE' New-ParamCompleter -ShortName o -LongName option -Description $msg.option -Type Required -VariableName 'OPT=VAL' ) -NoFileCompletions |