bash-completion/completions/lintian

179 lines
5.2 KiB
Bash

# bash completion for lintian(1) and lintian-info(1) -*- shell-script -*-
_lintian_tags()
{
local match search tags
tags=$( awk '/^Tag/ { print $2 }' /usr/share/lintian/checks/*.desc )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$( command grep -nE "^Tag: $item$" \
/usr/share/lintian/checks/*.desc | cut -d: -f1 )
tags=$( sed -e "s/\<$item\>//g" <<<$tags )
done
COMPREPLY+=( $(compgen -W "$tags") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY+=( $(compgen -P "${cur%,*}," -W "$tags" -- "${cur##*,}") )
else
COMPREPLY+=( $(compgen -W "$tags" -- "$cur") )
fi
return 0
}
_lintian_checks()
{
local match search todisable checks
checks=$( awk '/^(Check-Script|Abbrev)/ { print $2 }' \
/usr/share/lintian/checks/*.desc )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$( command grep -nE "^(Check-Script|Abbrev): $item$" \
/usr/share/lintian/checks/*.desc | cut -d: -f1 )
todisable=$( awk '/^(Check-Script|Abbrev)/ { print $2 }' $match )
for name in $todisable; do
checks=$( sed -e "s/\<$name\>//g" <<<$checks )
done
done
COMPREPLY+=( $(compgen -W "$checks") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY+=( $(compgen -P "${cur%,*}," -W "$checks" -- "${cur##*,}") )
else
COMPREPLY+=( $(compgen -W "$checks" -- "$cur") )
fi
return 0
}
_lintian_infos()
{
local match search infos
infos=$( awk '/^Collector/ { print $2 }' \
/usr/share/lintian/collection/*.desc )
if [[ "$cur" == *, ]]; then
search=${cur//,/ }
for item in $search; do
match=$( command grep -nE "^Collector: $item$" \
/usr/share/lintian/collection/*.desc | cut -d: -f1 )
infos=$( sed -e "s/\<$item\>//g" <<<$infos )
done
COMPREPLY+=( $(compgen -W "$infos") )
elif [[ "$cur" == *,* ]]; then
COMPREPLY+=( $(compgen -P "${cur%,*}," -W "$infos" -- "${cur##*,}") )
else
COMPREPLY+=( $(compgen -W "$infos" -- "$cur") )
fi
return 0
}
_lintian_arches()
{
return 0
}
_lintian()
{
local cur prev words cword
_init_completion || return
local action lint_actions general_opts behaviour_opts \
configuration_opts selection_opts
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 --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
;;
--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.
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
} &&
complete -F _lintian lintian
_lintian_info()
{
local cur prev words cword
_init_completion || return
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_info lintian-info
# ex: ts=4 sw=4 et filetype=sh