apt.bash-completion 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # Debian apt(8) completion -*- shell-script -*-
  2. _apt()
  3. {
  4. local sourcesdir="/etc/apt/sources.list.d"
  5. local cur prev words cword
  6. _init_completion || return
  7. # see if the user selected a command already
  8. local COMMANDS=(
  9. "list"
  10. "search"
  11. "show"
  12. "install" "remove" "purge" "autoremove"
  13. "update"
  14. "upgrade" "full-upgrade" "dist-upgrade"
  15. "edit-sources"
  16. "help")
  17. local command i
  18. for (( i=0; i < ${#words[@]}-1; i++ )); do
  19. if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
  20. command=${words[i]}
  21. break
  22. fi
  23. done
  24. # supported options per command
  25. if [[ "$cur" == -* ]]; then
  26. case $command in
  27. install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove)
  28. COMPREPLY=( $( compgen -W '--show-progress
  29. --fix-broken --purge --verbose-versions --auto-remove
  30. --simulate --dry-run
  31. --download
  32. --fix-missing
  33. --fix-policy
  34. --ignore-hold
  35. --force-yes
  36. --trivial-only
  37. --reinstall --solver' -- "$cur" ) )
  38. return 0
  39. ;;
  40. update)
  41. COMPREPLY=( $( compgen -W '--list-cleanup
  42. ' -- "$cur" ) )
  43. return 0
  44. ;;
  45. list)
  46. COMPREPLY=( $( compgen -W '--installed --upgradable
  47. --manual-installed
  48. -v --verbose
  49. -a --all-versions
  50. ' -- "$cur" ) )
  51. return 0
  52. ;;
  53. show)
  54. COMPREPLY=( $( compgen -W '-a --all-versions
  55. ' -- "$cur" ) )
  56. return 0
  57. ;;
  58. esac
  59. fi
  60. # specific command arguments
  61. if [[ -n $command ]]; then
  62. case $command in
  63. remove|purge|autoremove)
  64. if [[ -f /etc/debian_version ]]; then
  65. # Debian system
  66. COMPREPLY=( $( \
  67. _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
  68. else
  69. # assume RPM based
  70. _xfunc rpm _rpm_installed_packages
  71. fi
  72. return 0
  73. ;;
  74. show|list)
  75. COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
  76. 2> /dev/null ) )
  77. return 0
  78. ;;
  79. install)
  80. COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
  81. 2> /dev/null ) )
  82. _filedir "*.deb"
  83. return 0
  84. ;;
  85. edit-sources)
  86. COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
  87. -- "$cur" ) )
  88. return 0
  89. ;;
  90. esac
  91. fi
  92. # no command yet, show what commands we have
  93. if [ "$command" = "" ]; then
  94. COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) )
  95. fi
  96. return 0
  97. } &&
  98. complete -F _apt apt
  99. # ex: ts=4 sw=4 et filetype=sh