new completion: pkgadd

This commit is contained in:
Yann Rouillard 2012-10-30 00:02:59 +01:00 committed by Guillaume Rousse
parent 6ddec67c2f
commit a54fa7340a
5 changed files with 80 additions and 0 deletions

View File

@ -3,6 +3,7 @@
* nmcli: new completion
* svcadm: new completion, contributed by Yann Rouillard <yann@opencsw.org>
* pkg-get: new completion, contributed by Yann Rouillard <yann@opencsw.org>
* pkgadd: new completion, contributed by Yann Rouillard <yann@opencsw.org>
bash-completion (2.0)

View File

@ -236,6 +236,7 @@ bashcomp_DATA = a2x \
pkg-config \
pkg-get \
pkg_delete \
pkgadd \
pkgtool \
plague-client \
pm-hibernate \

59
completions/pkgadd Normal file
View File

@ -0,0 +1,59 @@
# pkgadd completion -*- shell-script -*-
#
# Copyright 2006 Yann Rouillard <yann@opencsw.org>
_pkgadd ()
{
local cur prev words cword
_init_completion -n : || return
# if a device directory was given
# we must complete with the package
# available in this directory
local device=/var/spool/pkg;
local i=$cword
while [[ $((i--)) -gt 0 ]]; do
case "${words[$i]}" in
-d)
device="${words[$((i+1))]}";
break
;;
esac;
done;
case $prev in
-d)
_filedir pkg
_filedir -d
;;
-a|-r|-V)
_filedir
;;
-k|-s|-R)
_filedir -d
;;
-P|-k|-x)
;;
*)
if [[ ${cur} == -* ]] ; then
local opts="-a -A -d -k -n -M -P -r -R -s -v -V -x"
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
else
local pkginst_list
if [[ -d $device ]]; then
for filedir in $(/bin/ls -1 $device); do
if [[ -d "$device/$filedir" ]] && [[ -f "$device/$filedir/pkginfo" ]]; then
pkginst_list+=( ${pkginst_list[@]:-} "$filedir" )
fi
done
pkginst_list="${pkginst_list[@]}"
else
pkginst_list=$(strings $(dequote $device) | grep "^PKG=" | sort -u | cut -d= -f2)
fi
COMPREPLY=( $(compgen -W "$pkginst_list" -- ${cur}) )
fi
esac
} &&
complete -F _pkgadd pkgadd
# ex: ts=4 sw=4 et filetype=sh

View File

@ -0,0 +1 @@
assert_source_completions pkgadd

View File

@ -0,0 +1,18 @@
proc setup {} {
save_env
}
proc teardown {} {
assert_env_unmodified
}
setup
assert_complete_any "pkgadd "
sync_after_int
teardown