# # bash completion support for PackageKit's console commands. # # Copyright (C) 2007 James Bowes # Copyright (C) 2010 Richard Hughes # Copyright (C) 2025 Matthias Klumpp # # Licensed under the GNU General Public License Version 2 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # To use the completion: # 1. Copy this file somewhere (e.g. ~/.pk-completion.sh). # 2. Add the following line to your .bashrc: # source ~/.pk-completion.sh __pkgcli_commandlist=" backend history search list show list-depends list-required-by what-provides files list-updates show-update resolve organization show-os-upgrade last-time refresh install remove update upgrade download offline-update install-sig repair quit repo-list repo-enable repo-disable repo-remove monitor " __pkgclicomp () { local all c s=$'\n' IFS=' '$'\t'$'\n' local cur="${COMP_WORDS[COMP_CWORD]}" if [ $# -gt 2 ]; then cur="$3" fi for c in $1; do case "$c$4" in *.) all="$all$c$4$s" ;; *) all="$all$c$4 $s" ;; esac done IFS=$s COMPREPLY=($(compgen -P "$2" -W "$all" -- "$cur")) return } _pkgcli_search () { local i c=1 command while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in name|details|group|file) command="$i" break ;; esac c=$((++c)) done if [ $c -eq $COMP_CWORD -a -z "$command" ]; then __pkgclicomp "name details group file" fi return } _pkgcli () { local i c=1 command while [ $c -lt $COMP_CWORD ]; do i="${COMP_WORDS[c]}" case "$i" in --version|--help|--verbose|-v|-n|-h|-?) ;; *) command="$i"; break ;; esac c=$((++c)) done if [ $c -eq $COMP_CWORD -a -z "$command" ]; then case "${COMP_WORDS[COMP_CWORD]}" in --*=*) COMPREPLY=() ;; --*) __pkgclicomp " --version --filter --verbose --help " ;; -*) __pkgclicomp " -v -n -h -? --version --verbose --help --filter " ;; *) __pkgclicomp "$__pkgcli_commandlist" ;; esac return fi case "$command" in search) _pkgcli_search ;; *) COMPREPLY=() ;; esac } complete -o default -o nospace -F _pkgcli pkgcli