Add bash completion script for pkcon.

This commit is contained in:
James Bowes 2007-10-22 10:25:02 -04:00
parent e93bc3e84e
commit 9b35c113ee

148
contrib/pk-completion.bash Executable file
View File

@ -0,0 +1,148 @@
#
# bash completion support for PackageKit's console commands.
#
# Copyright (C) 2007 James Bowes <jbowes@dangerouslyinc.com>
#
# 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 ~/.git-completion.sh
__pkcon_commandlist="
search
install
remove
update
refresh
resolve
force-refresh
update-system
get
enable-repo
disable-repo
"
__pkconcomp ()
{
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
}
_pkcon_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
__pkconcomp "name details group file"
fi
return
}
_pkcon_get ()
{
local i c=1 command
while [ $c -lt $COMP_CWORD ]; do
i="${COMP_WORDS[c]}"
case "$i" in
updates|depends|requires|description|updatedetail|actions|groups|filters|transactions|repos)
command="$i"
break
;;
esac
c=$((++c))
done
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
__pkconcomp "
updates
depends
requires
description
updatedetail
actions
groups
filters
transactions
repos
"
fi
return
}
_pkcon ()
{
local i c=1 command
while [ $c -lt $COMP_CWORD ]; do
i="${COMP_WORDS[c]}"
case "$i" in
--version|--help|--verbose|--nowait|-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=() ;;
--*) __pkconcomp "
--version
--verbose
--help
--nowait
"
;;
-*) __pkconcomp "
-v
-n
-h
-?
--version
--verbose
--help
--nowait
"
;;
*) __pkconcomp "$__pkcon_commandlist" ;;
esac
return
fi
case "$command" in
search) _pkcon_search ;;
get) _pkcon_get ;;
*) COMPREPLY=() ;;
esac
}
complete -o default -o nospace -F _pkcon pkcon