[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 36189b0c7bccc08309f0c0a954e256820fb367e2

David Paleino dapal at debian.org
Mon May 24 16:24:14 UTC 2010


The following commit has been merged in the master branch:
commit 36189b0c7bccc08309f0c0a954e256820fb367e2
Author: David Paleino <dapal at debian.org>
Date:   Mon May 24 18:23:24 2010 +0200

    Added lintian completion

diff --git a/CHANGES b/CHANGES
index 791c008..fb51cab 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,7 @@ bash-completion (2.x)
   * Style policy: don't use fancy globbing in case labels
   * Added .fdf completion to okular and evince
   * Added .okular completion to okular (Debian: #545530)
+  * Added lintian completion
 
   [ Ville Skyttä ]
   * Create bz2 dist tarball too.
diff --git a/contrib/lintian b/contrib/lintian
new file mode 100644
index 0000000..a1f5154
--- /dev/null
+++ b/contrib/lintian
@@ -0,0 +1,186 @@
+# -*- 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 -o filenames lintian
+complete -F _lintian_info -o filenames lintian-info
+}

-- 
bash-completion



More information about the Bash-completion-commits mailing list