summaryrefslogtreecommitdiffstats
path: root/completions/lintian
diff options
context:
space:
mode:
Diffstat (limited to 'completions/lintian')
-rw-r--r--completions/lintian176
1 files changed, 176 insertions, 0 deletions
diff --git a/completions/lintian b/completions/lintian
new file mode 100644
index 0000000..9343832
--- /dev/null
+++ b/completions/lintian
@@ -0,0 +1,176 @@
+# 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