mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-09 20:33:34 -08:00
177 lines
5.2 KiB
Bash
177 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=$(command 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
|
|
}
|
|
|
|
_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=$(command 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
|
|
}
|
|
|
|
_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=$(command 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
|
|
}
|
|
|
|
_lintian()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local lint_actions general_opts behaviour_opts configuration_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"
|
|
|
|
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
|
|
;;
|
|
*)
|
|
# in Ubuntu, dbgsym packages end in .ddeb, lintian >= 2.57.0 groks
|
|
_filedir '@(?(u|d)deb|changes|dsc|buildinfo)'
|
|
;;
|
|
esac
|
|
return 0
|
|
} &&
|
|
complete -F _lintian lintian
|
|
|
|
_lintian_info()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
case "$prev" in
|
|
--help | --profile)
|
|
return
|
|
;;
|
|
-t | --tags)
|
|
_lintian_tags
|
|
return
|
|
;;
|
|
--include-dir)
|
|
_filedir -d
|
|
return
|
|
;;
|
|
esac
|
|
|
|
case "$cur" in
|
|
--*)
|
|
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
|
;;
|
|
*)
|
|
_filedir
|
|
;;
|
|
esac
|
|
return 0
|
|
} &&
|
|
complete -F _lintian_info lintian-info
|
|
|
|
# ex: filetype=sh
|