mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-06 01:58:46 +00:00
04d7d89020
Of note: The rpm/yum thing seems to be coupled, so I put it into one function that tries the yum helper and uses the rpm path otherwise. Zypper is already its own thing, so this should only be used for yum and probably dnf (does that still have the helper?) Zypper can be dropped, as that already used a separate function in the file. Apk can just be inlined - it's literally one line for installed and another for all packages.
168 lines
9.7 KiB
Fish
168 lines
9.7 KiB
Fish
# This can't currently be wrapped as the pacman completions rely on variables whose value this needs to change
|
|
# complete -c aura -w pacman
|
|
set -l listinstalled "(pacman -Q | tr ' ' \t)"
|
|
set -l listall "(__fish_print_pacman_packages)"
|
|
set -l listrepos "(__fish_print_pacman_repos)"
|
|
set -l listgroups "(pacman -Sg | sed 's/\(.*\)/\1\tPackage group/g')"
|
|
|
|
set -l noopt 'not __fish_contains_opt -s S -s D -s Q -s R -s U -s T -s A -s B -s C -s L -s O -s P database query sync remove upgrade deptest aursync save downgrade viewlog orphans analysis'
|
|
set -l database '__fish_contains_opt -s D database'
|
|
set -l query '__fish_contains_opt -s Q query'
|
|
set -l remove '__fish_contains_opt -s R remove'
|
|
set -l sync '__fish_contains_opt -s S sync'
|
|
set -l upgrade '__fish_contains_opt -s U upgrade'
|
|
set -l aur '__fish_contains_opt -s A aursync'
|
|
set -l save '__fish_contains_opt -s B save'
|
|
set -l downgrade '__fish_contains_opt -s C downgrade'
|
|
set -l orphans '__fish_contains_opt -s O orphans'
|
|
set -l logfile '__fish_contains_opt -s L viewlog'
|
|
set -l analysis '__fish_contains_opt -s P analysis'
|
|
set -l search '__fish_contains_opt -s s search'
|
|
|
|
# By default fish expands the arguments with the option which is not desired
|
|
# due to performance reasons.
|
|
# This will make sure we are expanding an argument and not an option:
|
|
set -l argument 'not expr -- (commandline --current-token) : "^-.*" > /dev/null'
|
|
|
|
# Primary operations
|
|
complete -c aura -s A -f -l aursync -n $noopt -d 'Synchronize AUR packages'
|
|
complete -c aura -s B -f -l save -n $noopt -d 'Save and restore package state'
|
|
complete -c aura -s C -f -l downgrade -n $noopt -d 'Package cache actions'
|
|
complete -c aura -s D -f -l database -n $noopt -d 'Modify the package database'
|
|
complete -c aura -s L -f -l viewlog -n $noopt -d 'Pacman log actions'
|
|
complete -c aura -s O -f -l orphans -n $noopt -d 'Operate on orphan packages'
|
|
complete -c aura -s P -f -l analysis -n $noopt -d 'Analyse a PKGBUILD for security flaws'
|
|
complete -c aura -s Q -f -l query -n $noopt -d 'Query the package database'
|
|
complete -c aura -s R -f -l remove -n $noopt -d 'Remove packages from the system'
|
|
complete -c aura -s S -f -l sync -n $noopt -d 'Synchronize packages'
|
|
complete -c aura -s T -f -l deptest -n $noopt -d 'Check dependencies'
|
|
complete -c aura -s U -f -l upgrade -n $noopt -d 'Upgrade or add a local package'
|
|
complete -c aura -l languages -d 'Show available languages'
|
|
complete -c aura -l viewconf -d 'View pacman.conf'
|
|
complete -c aura -s V -f -l version -d 'Display version and exit'
|
|
complete -c aura -s h -f -l help -d 'Display help'
|
|
|
|
# General options
|
|
complete -c aura -s b -l dbpath -d 'Alternative database location' -xa '(__fish_complete_directories)'
|
|
complete -c aura -s r -l root -d 'Alternative installation root'
|
|
complete -c aura -s v -l verbose -d 'Output more status messages'
|
|
complete -c aura -l arch -d 'Alternate architecture'
|
|
complete -c aura -l cachedir -d 'Alternative package cache location'
|
|
complete -c aura -l config -d 'Alternate config file'
|
|
complete -c aura -l debug -d 'Display debug messages'
|
|
complete -c aura -l gpgdir -d 'GPG directory to verify signatures'
|
|
complete -c aura -l logfile -d 'Specify alternative log file'
|
|
complete -c aura -l noconfirm -d 'Bypass any question'
|
|
|
|
# Transaction options (sync, remove, upgrade)
|
|
for condition in sync remove upgrade
|
|
complete -c aura -n $$condition -s d -l nodeps -d 'Skip [all] dependency checks'
|
|
complete -c aura -n $$condition -l dbonly -d 'Modify database entry only'
|
|
complete -c aura -n $$condition -l noprogressbar -d 'Do not display progress bar'
|
|
complete -c aura -n $$condition -l noscriptlet -d 'Do not execute install script'
|
|
complete -c aura -n $$condition -s p -l print -d 'Dry run, only print targets'
|
|
complete -c aura -n $$condition -l print-format -x -d 'Specify printf-like format'
|
|
end
|
|
|
|
# Database and upgrade options (database, sync, upgrade)
|
|
for condition in database sync upgrade
|
|
complete -c aura -n $$condition -l asdeps -d 'Mark PACKAGE as dependency'
|
|
complete -c aura -n $$condition -l asexplicit -d 'Mark PACKAGE as explicitly installed'
|
|
end
|
|
|
|
# Upgrade options (sync, upgrade)
|
|
for condition in sync upgrade
|
|
complete -c aura -n $$condition -s f -l force -d 'Bypass file conflict checks'
|
|
complete -c aura -n $$condition -l ignore -d 'Ignore upgrade of PACKAGE' -xa "$listinstalled"
|
|
complete -c aura -n $$condition -l ignoregroup -d 'Ignore upgrade of GROUP' -xa "$listgroups"
|
|
complete -c aura -n $$condition -l needed -d 'Do not reinstall up-to-date targets'
|
|
complete -c aura -n $$condition -l recursive -d 'Recursively reinstall all dependencies'
|
|
end
|
|
|
|
# Query and sync options
|
|
for condition in query sync
|
|
complete -c aura -n $$condition -s g -l groups -d 'Display all packages in GROUP' -xa "$listgroups"
|
|
complete -c aura -n $$condition -s i -l info -d 'Display information on PACKAGE'
|
|
complete -c aura -n $$condition -s q -l quiet -d 'Show less information'
|
|
complete -c aura -n $$condition -s s -l search -r -d 'Search packages for regexp'
|
|
end
|
|
|
|
for condition in abs aur
|
|
complete -c aura -n $$condition -s a -l delmakedeps -d 'Remove packages only needed during installation'
|
|
complete -c aura -n $$condition -s d -l deps -d 'View package dependencies'
|
|
complete -c aura -n $$condition -s i -l info -d 'View package information'
|
|
complete -c aura -n $$condition -s k -l diff -d 'Show PKGBUILD diffs'
|
|
complete -c aura -n $$condition -s p -l pkgbuild -d 'View the packages\'s PKGBUILD'
|
|
complete -c aura -n $$condition -s x -l unsuppress -d 'Show makepkg output'
|
|
complete -c aura -n $$condition -l absdeps -d 'Build dependencies from ABS'
|
|
end
|
|
|
|
# AUR options
|
|
complete -c aura -n $aur -s q -l quiet -d 'Show less information'
|
|
complete -c aura -n $aur -s s -l search -r -d 'Search AUR by string matching'
|
|
complete -c aura -n $aur -s u -l sysupgrade -d 'Upgrade all installed AUR packages'
|
|
complete -c aura -n $aur -s w -l downloadonly -d 'Download the source tarball'
|
|
complete -c aura -n $aur -l aurignore -r -d 'Ignore given comma-separated packages'
|
|
complete -c aura -n $aur -l build -r -d 'Specify a build location'
|
|
complete -c aura -n $aur -l builduser -r -d 'User to build as'
|
|
complete -c aura -n $aur -l devel -d 'Include -git/-svn/etc packages'
|
|
complete -c aura -n $aur -l hotedit -d 'Prompt for PKGBUILD editing'
|
|
complete -c aura -n $aur -l ignorearch -d 'Ignore architecture checking'
|
|
complete -c aura -n "$aur; and $search" -l abc -d 'Sort alphabetically'
|
|
complete -c aura -n "$aur; and $search" -l head -d 'Only show the first 10 results'
|
|
complete -c aura -n "$aur; and $search" -l tail -d 'Only show the last 10 results'
|
|
|
|
# Backup options
|
|
complete -c aura -n $save -s c -l clean -d 'Remove all but the given number of backups'
|
|
complete -c aura -n $save -s r -l restore -d 'Restores a record kept with -B'
|
|
|
|
# Downgrade options
|
|
complete -c aura -n $downgrade -s b -l backup -d 'Backup to directory'
|
|
complete -c aura -n $downgrade -s c -l clean -d 'Save this many versions'
|
|
complete -c aura -n $downgrade -s s -l search -r -d 'Search via regex'
|
|
|
|
# Logfile options
|
|
complete -c aura -n $logfile -s i -l info -d 'Show package history'
|
|
complete -c aura -n $logfile -s s -l search -r -d 'Search via regex'
|
|
|
|
# Analysis options
|
|
complete -c aura -n $analysis -s f -l file -d 'Analyse a given PKGBUILD'
|
|
complete -c aura -n $analysis -s d -l dir -d 'Analyse a PKGBUILD within a given directory'
|
|
complete -c aura -n $analysis -s a -l audit -d 'Analyse the PKGBUILDs of all installed AUR packages'
|
|
|
|
# Orphan options
|
|
complete -c aura -n $orphans -s a -l adopt -d 'Mark a package as being explicitly installed'
|
|
complete -c aura -n $orphans -s j -l abandon -d 'Uninstall orphan packages'
|
|
|
|
# Query options
|
|
complete -c aura -n $query -s c -l changelog -d 'View the change log of PACKAGE'
|
|
complete -c aura -n $query -s d -l deps -d 'List only non-explicit packages (dependencies)'
|
|
complete -c aura -n $query -s e -l explicit -d 'List only explicitly installed packages'
|
|
complete -c aura -n $query -s k -l check -d 'Check if all files owned by PACKAGE are present'
|
|
complete -c aura -n $query -s l -l list -d 'List all files owned by PACKAGE'
|
|
complete -c aura -n $query -s m -l foreign -d 'List all packages not in the database'
|
|
complete -c aura -n $query -s o -l owns -r -d 'Search for the package that owns FILE'
|
|
complete -c aura -n $query -s p -l file -d 'Apply the query to a package file, not package'
|
|
complete -c aura -n $query -s t -l unrequired -d 'List only unrequired packages'
|
|
complete -c aura -n $query -s u -l upgrades -d 'List only out-of-date packages'
|
|
complete -c aura -n "$query; and $argument" -xa $listinstalled -d 'Installed package'
|
|
|
|
# Remove options
|
|
complete -c aura -n $remove -s c -l cascade -d 'Also remove packages depending on PACKAGE'
|
|
complete -c aura -n $remove -s n -l nosave -d 'Ignore file backup designations'
|
|
complete -c aura -n $remove -s s -l recursive -d 'Also remove dependencies of PACKAGE'
|
|
complete -c aura -n $remove -s u -l unneeded -d 'Only remove targets not required by PACKAGE'
|
|
complete -c aura -n "$remove; and $argument" -xa $listinstalled -d 'Installed package'
|
|
|
|
# Sync options
|
|
complete -c aura -n $sync -s c -l clean -d 'Remove [all] packages from cache'
|
|
complete -c aura -n $sync -s l -l list -xa "$listrepos" -d 'List all packages in REPOSITORY'
|
|
complete -c aura -n $sync -s u -l sysupgrade -d 'Upgrade all packages that are out of date'
|
|
complete -c aura -n $sync -s w -l downloadonly -d 'Only download the target packages'
|
|
complete -c aura -n $sync -s y -l refresh -d 'Download fresh copy of the package list'
|
|
complete -c aura -n "$sync; and $argument" -xa "$listall $listgroups"
|
|
|
|
# Upgrade options
|
|
complete -c aura -n "$upgrade; and $argument" -xa '(__fish_complete_suffix pkg.tar.xz)' -d 'Package file'
|
|
complete -c aura -n "$upgrade; and $argument" -xa '(__fish_complete_suffix pkg.tar.gz)' -d 'Package file'
|
|
complete -c aura -n "$upgrade; and $argument" -xa '(__fish_complete_suffix pkg.tar.zst)' -d 'Package file'
|