mirror of
https://github.com/Jguer/yay
synced 2024-09-01 06:08:39 +00:00
![nycex](/assets/img/avatar_default.png)
fix linting errors format with make fmt fix completions resolve most of the requested changes move loop over dbSlice back into makeRequest query aur in chunks of 20 check for status codes continue instead of return in for loop format code
138 lines
4.2 KiB
Bash
138 lines
4.2 KiB
Bash
# This file is in the public domain.
|
|
|
|
_arch_compgen() {
|
|
local i r
|
|
COMPREPLY=($(compgen -W '$*' -- "$cur"))
|
|
for ((i = 1; i < ${#COMP_WORDS[@]} - 1; i++)); do
|
|
for r in ${!COMPREPLY[@]}; do
|
|
if [[ ${COMP_WORDS[i]} == ${COMPREPLY[r]} ]]; then
|
|
unset 'COMPREPLY[r]'
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
_arch_ptr2comp() {
|
|
local list= x y
|
|
for x; do
|
|
for y in '0 --' '1 -'; do
|
|
eval 'set -- ${'$x'[${y% *}]}'
|
|
list+=\ ${@/#/${y#* }}
|
|
done
|
|
done
|
|
_arch_compgen $list
|
|
}
|
|
|
|
_arch_incomp() {
|
|
local r="[[:space:]]-(-${1#* }[[:space:]]|[[:alnum:]_]*${1% *})"
|
|
[[ $COMP_LINE =~ $r ]]
|
|
}
|
|
|
|
_pacman_pkg() {
|
|
_arch_compgen "$(
|
|
if [[ $2 ]]; then
|
|
\pacman -$1 2>/dev/null | \cut -d' ' -f1 | \sort -u
|
|
else
|
|
\pacman -$1 2>/dev/null
|
|
fi
|
|
)"
|
|
}
|
|
|
|
_yay_pkg() {
|
|
[ -z "$cur" ] && _pacman_pkg Slq && return
|
|
_arch_compgen "$(yay -Pc)"
|
|
}
|
|
|
|
_pacman_repo_list() {
|
|
_arch_compgen "$(pacman-conf --repo-list)"
|
|
}
|
|
|
|
_yay() {
|
|
compopt -o default
|
|
local common core cur database files prev query remove sync upgrade o
|
|
local yays show getpkgbuild
|
|
local cur prev words cword
|
|
|
|
_init_completion || return
|
|
database=('asdeps asexplicit')
|
|
files=('list machinereadable refresh regex' 'l x y')
|
|
query=('changelog check deps explicit file foreign groups info list native owns
|
|
search unrequired upgrades' 'c e g i k l m n o p s t u')
|
|
remove=('cascade dbonly nodeps assume-installed nosave print recursive unneeded' 'c n p s u')
|
|
sync=('asdeps asexplicit clean dbonly downloadonly overwrite groups ignore ignoregroup
|
|
info list needed nodeps assume-installed print refresh recursive search sysupgrade'
|
|
'c g i l p s u w y')
|
|
upgrade=('asdeps asexplicit overwrite needed nodeps assume-installed print recursive' 'p')
|
|
core=('database files help query remove sync upgrade version' 'D F Q R S U V h')
|
|
|
|
##yay stuff
|
|
common=('arch cachedir color config confirm dbpath debug gpgdir help hookdir logfile
|
|
noconfirm noprogressbar noscriptlet quiet root verbose
|
|
makepkg pacman git gpg gpgflags config requestsplitn sudoloop nosudoloop
|
|
redownload noredownload redownloadall rebuild rebuildall rebuildtree norebuild
|
|
sortby answerclean answerdiff answeredit answerupgrade noanswerclean noanswerdiff
|
|
noansweredit noanswerupgrade cleanmenu diffmenu editmenu upgrademenu cleanafter nocleanafter
|
|
nocleanmenu nodiffmenu noupgrademenu provides noprovides pgpfetch nopgpfetch
|
|
useask nouseask combinedupgrade nocombinedupgrade aur repo makepkgconf
|
|
nomakepkgconf askremovemake removemake noremovemake completioninterval aururl
|
|
searchby batchinstall nobatchinstall'
|
|
'b d h q r v')
|
|
yays=('clean gendb' 'c')
|
|
show=('complete defaultconfig currentconfig stats news pkgbuild' 'c d g s w p')
|
|
getpkgbuild=('force' 'f')
|
|
|
|
for o in 'D database' 'F files' 'Q query' 'R remove' 'S sync' 'U upgrade' 'Y yays' 'P show' 'G getpkgbuild'; do
|
|
_arch_incomp "$o" && break
|
|
done
|
|
|
|
if [[ $? != 0 ]]; then
|
|
_arch_ptr2comp core
|
|
elif [[ ! $prev =~ ^-[[:alnum:]_]*[Vbhr] && ! $prev == --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|logfile|root|version) ]]; then
|
|
[[ $cur == -* ]] && _arch_ptr2comp ${o#* } common ||
|
|
case ${o% *} in
|
|
D | R)
|
|
_pacman_pkg Qq
|
|
;;
|
|
F)
|
|
{ _arch_incomp 'l list' && _pacman_pkg Slq; } ||
|
|
_arch_incomp 'o owns' ||
|
|
compopt +o default
|
|
;;
|
|
Q)
|
|
{ _arch_incomp 'g groups' && _pacman_pkg Qg sort; } ||
|
|
{ _arch_incomp 'p file' && _pacman_file; } ||
|
|
{ _arch_incomp 's search' && compopt +o default; } ||
|
|
{ _arch_incomp 'u upgrades' && compopt +o default; } ||
|
|
_arch_incomp 'o owns' ||
|
|
_pacman_pkg Qq
|
|
;;
|
|
S)
|
|
{ _arch_incomp 'g groups' && _pacman_pkg Sg; } ||
|
|
{ _arch_incomp 'l list' && _pacman_repo_list; } ||
|
|
{ _arch_incomp 's search' && compopt +o default; } ||
|
|
_yay_pkg
|
|
;;
|
|
U)
|
|
_pacman_file
|
|
;;
|
|
G)
|
|
_yay_pkg
|
|
;;
|
|
P)
|
|
_arch_incomp 'p pkgbuild' && _yay_pkg
|
|
;;
|
|
esac
|
|
fi
|
|
true
|
|
}
|
|
|
|
_pacman_file() {
|
|
compopt -o filenames
|
|
_filedir 'pkg.tar*'
|
|
}
|
|
|
|
complete -F _yay yay
|
|
|
|
# ex:et ts=2 sw=2 ft=sh
|