mirror of
				https://github.com/Jguer/yay.git
				synced 2025-11-04 00:03:44 -05:00 
			
		
		
		
	Removes tar completions Removes --owns from bash/zsh Bash now prints repo pkgs if no letter is entered and AUR and repo if there's a letter
		
			
				
	
	
		
			135 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			4.1 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' 'c d g s w')
 | 
						|
  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
 | 
						|
        ;;
 | 
						|
      esac
 | 
						|
  fi
 | 
						|
  true
 | 
						|
}
 | 
						|
 | 
						|
_pacman_file() {
 | 
						|
  compopt -o filenames
 | 
						|
  _filedir 'pkg.tar*'
 | 
						|
}
 | 
						|
 | 
						|
complete -F _yay yay
 | 
						|
 | 
						|
# ex:et ts=2 sw=2 ft=sh
 |