new completion: pkg-get
This commit is contained in:
parent
80356ca816
commit
6ddec67c2f
2
CHANGES
2
CHANGES
@ -1,6 +1,8 @@
|
||||
[ Guillaume Rousse ]
|
||||
* gphoto2: new completion
|
||||
* nmcli: new completion
|
||||
* svcadm: new completion, contributed by Yann Rouillard <yann@opencsw.org>
|
||||
* pkg-get: new completion, contributed by Yann Rouillard <yann@opencsw.org>
|
||||
|
||||
bash-completion (2.0)
|
||||
|
||||
|
@ -234,6 +234,7 @@ bashcomp_DATA = a2x \
|
||||
pine \
|
||||
ping \
|
||||
pkg-config \
|
||||
pkg-get \
|
||||
pkg_delete \
|
||||
pkgtool \
|
||||
plague-client \
|
||||
@ -303,6 +304,7 @@ bashcomp_DATA = a2x \
|
||||
strace \
|
||||
su \
|
||||
sudo \
|
||||
svcadm \
|
||||
svk \
|
||||
sync_members \
|
||||
sysbench \
|
||||
|
75
completions/pkg-get
Executable file
75
completions/pkg-get
Executable file
@ -0,0 +1,75 @@
|
||||
# pkg-get.completion completion -*- shell-script -*-
|
||||
#
|
||||
# Copyright 2006 Yann Rouillard <yann@opencsw.org>
|
||||
|
||||
_have pkg-get &&
|
||||
_pkg-get_get_catalog_file()
|
||||
{
|
||||
local url="$1"
|
||||
local catalog_file i conffile
|
||||
|
||||
for file in /etc/opt/csw/pkg-get.conf /opt/csw/etc/pkg-get.conf /etc/pkg-get.conf; do
|
||||
if [[ -f $file ]]; then
|
||||
conffile="$file"
|
||||
break
|
||||
fi
|
||||
done
|
||||
conffile="${conffile:-/opt/csw/etc/pkg-get.conf}"
|
||||
|
||||
if [[ -z "$url" ]]; then
|
||||
url=$(awk -F= ' $1=="url" { print $2 }' $conffile)
|
||||
fi
|
||||
|
||||
catalog_file="${url##*//}"
|
||||
catalog_file="${catalog_file%%/*}"
|
||||
catalog_file="/var/pkg-get/catalog-$catalog_file"
|
||||
|
||||
echo "$catalog_file"
|
||||
} &&
|
||||
_pkg-get()
|
||||
{
|
||||
local cur prev file catalog_file url command
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
|
||||
if [[ "${prev}" = "-s" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
i=${#COMP_WORDS[*]}
|
||||
while [[ $i -gt 0 ]]; do
|
||||
i=$((i-1))
|
||||
if [[ "${COMP_WORDS[$i]}" = "-s" ]]; then
|
||||
url="${COMP_WORDS[$((i+1))]}"
|
||||
fi
|
||||
if [[ "${COMP_WORDS[$i]}" == @(available|-a|describe|-D|download|-d|install|-i|list|updatecatalog|-U|upgrade|-u) ]]; then
|
||||
command="${COMP_WORDS[$i]}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -n "$command" ]]; then
|
||||
if [[ "$command" == @(describe|-D|download|-d|install|-i) ]]; then
|
||||
catalog_file=$(_pkg-get_get_catalog_file "$url")
|
||||
if [[ -f $catalog_file ]]; then
|
||||
local packages_list=$(awk ' $0 ~ /BEGIN PGP SIGNATURE/ { exit } $1 ~ /^Hash:/ || $1 ~ /^ *(-|#|$)/ { next } { print $1 }' $catalog_file)
|
||||
COMPREPLY=( $(compgen -W "${packages_list}" -- ${cur}) )
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ ${cur} == -* ]] ; then
|
||||
local opts="-c -d -D -f -i -l -s -S -u -U -v"
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
else
|
||||
local commands="available describe download install list \
|
||||
updatecatalog upgrade"
|
||||
COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
|
||||
return 0
|
||||
fi
|
||||
} &&
|
||||
complete -F _pkg-get pkg-get
|
||||
|
||||
# ex: ts=4 sw=4 et filetype=sh
|
1
test/completion/pkg-get.exp
Normal file
1
test/completion/pkg-get.exp
Normal file
@ -0,0 +1 @@
|
||||
assert_source_completions pkg-get
|
18
test/lib/completions/pkg-get.exp
Normal file
18
test/lib/completions/pkg-get.exp
Normal file
@ -0,0 +1,18 @@
|
||||
proc setup {} {
|
||||
save_env
|
||||
}
|
||||
|
||||
|
||||
proc teardown {} {
|
||||
assert_env_unmodified
|
||||
}
|
||||
|
||||
|
||||
setup
|
||||
|
||||
|
||||
assert_complete_any "pkg-get "
|
||||
sync_after_int
|
||||
|
||||
|
||||
teardown
|
Loading…
x
Reference in New Issue
Block a user