haiku/data/etc/bash_completion.d/lintian
Brecht Machiels 4a135b33b7 * upgraded bash_completion to v1.3
* upgraded to subversion bash completion script shipped with subversion 1.6.17
* added git bash completion script shipped with git 1.7.5.4
* readded bash completion to the image

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-19 21:19:36 +00:00

187 lines
5.8 KiB
Bash

# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for lintian(1) and lintian-info(1)
have lintian && {
_lintian_tags() {
local match search tags
tags=$( grep -e ^Tag /usr/share/lintian/checks/*.desc | cut -d\ -f2 )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$(grep -nE "^Tag: $item$" /usr/share/lintian/checks/*.desc \
| cut -d: -f1 )
tags=$( echo $tags | sed -e "s/\<$item\>//g" )
done
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$tags" -- \
"${cur##*,}") )
else
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags" -- "$cur") )
fi
return 0
}
_lintian_checks() {
local match search todisable checks
checks=$(grep -e ^Check-Script -e ^Abbrev \
/usr/share/lintian/checks/*.desc | cut -d\ -f2 )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$(grep -nE "^(Check-Script|Abbrev): $item$" \
/usr/share/lintian/checks/*.desc | cut -d: -f1 )
todisable=$(grep -e ^Check-Script -e ^Abbrev $match | \
cut -d\ -f2 )
for name in $todisable; do
checks=$( echo $checks | sed -e "s/\<$name\>//g" )
done
done
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$checks" \
-- "${cur##*,}") )
else
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks" -- "$cur") )
fi
return 0
}
_lintian_infos() {
local match search infos
infos=$(grep -e ^Collector /usr/share/lintian/collection/*.desc \
| cut -d\ -f2 )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$( grep -nE "^Collector: $item$" \
/usr/share/lintian/collection/*.desc | cut -d: -f1 )
infos=$( echo $infos | sed -e "s/\<$item\>//g" )
done
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$infos" \
-- "${cur##*,}") )
else
COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos" -- "$cur") )
fi
return 0
}
_lintian_arches() {
return 0
}
_lintian() {
local cur prev action lint_actions general_opts behaviour_opts \
configuration_opts selection_opts
_get_comp_words_by_ref cur prev
lint_actions="--setup-lab --remove-lab --check --check-part --tags \
--tags-from-file --ftp-master-rejects --dont-check-part \
--unpack --remove"
general_opts="--help --version --print-version --verbose --debug --quiet"
behaviour_opts="--info --display-info --display-experimental --pedantic \
--display-level --suppress-tags --unpack-level \
--suppress-tags-from-file --no-override --show-overrides \
--color --unpack-info --md5sums --checksums --allow-root \
--fail-on-warnings --keep-lab"
configuration_opts="--cfg --lab --archivedir --dist --area --section \
--arch --root"
selection_opts="--all --binary --source --udeb --packages-file"
if [[ "$prev" = -* ]]; then
case $prev in
-C|--check-part|-X|--dont-check-part)
_lintian_checks
;;
-T|--tags|--suppress-tags)
_lintian_tags
;;
--tags-from-file|--suppress-tags-from-file|--cfg|-p|\
--packages-file)
_filedir
;;
--lab|--archivedir|--dist|--root)
_filedir -d
;;
-l|--unpack-level)
COMPREPLY=($(compgen -W "0 none 1 basic 2 contents" -- \
"$cur"))
;;
--color)
COMPREPLY=($(compgen -W "never always auto html" -- "$cur"))
;;
-U|--unpack-info)
_lintian_infos
;;
--area|--section)
COMPREPLY=($(compgen -W "main contrib non-free" -- "$cur"))
;;
--arch)
;;
esac
fi
case "$cur" in
--*)
COMPREPLY=($(compgen -W "$lint_actions $general_opts \
$behaviour_opts $configuration_opts" -- "$cur"))
;;
*,)
# If we're here, the user is trying to complete on
# --action tag,tag,<TAB>
# Only few actions permit that, re-complete them now.
echo $prev
case "$prev" in
-C|--check-part|-X|--dont-check-part)
_lintian_checks
;;
-T|--tags|--suppress-tags)
_lintian_tags
;;
-U|--unpack-info)
_lintian_infos
;;
esac
;;
*)
_filedir '@(?(u)deb|changes|dsc)'
;;
esac
return 0
}
_lintian_info() {
local cur prev
_get_comp_words_by_ref cur prev
case "$prev" in
-t|--tags)
_lintian_tags
return 0
;;
esac
case "$cur" in
--*)
COMPREPLY=($(compgen -W "--annotate --help --tags" -- "$cur"))
;;
*)
_filedir
;;
esac
return 0
}
complete -F _lintian lintian
complete -F _lintian_info lintian-info
}