1# bash completion for gzip
2
3have gzip || have pigz &&
4_gzip()
5{
6    local cur prev xspec helpopts
7
8    COMPREPLY=()
9    _get_comp_words_by_ref cur prev
10    helpopts=`_parse_help ${COMP_WORDS[0]}`
11
12    case $prev in
13        -b|--blocksize|-p|--processes|-S|--suffix|-h|--help|-V|--version)
14            return 0
15            ;;
16    esac
17
18    if [[ "$cur" == -* ]]; then
19        COMPREPLY=( $( compgen -W "$helpopts -1 -2 -3 -4 -5 -6 -7 -8 -9" \
20            -- "$cur" ) )
21        return 0
22    fi
23
24    local IFS=$'\n'
25
26    xspec="*.@(gz|t[ag]z)"
27    if [[ "$prev" == --* ]]; then
28        [[ "$prev" == --decompress || \
29            "$prev" == --list || \
30            "$prev" == --test ]] && xspec="!"$xspec
31        [[ "$prev" == --force ]] && xspec=
32    elif [[ "$prev" == -* ]]; then
33        [[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec
34        [[ "$prev" == -*f* ]] && xspec=
35    elif [[ "$prev" == '>' || "$prev" == '>>' ]]; then
36        xspec=
37    elif [ "$prev" = '<' ]; then
38        xspec=
39    fi
40
41    _expand || return 0
42
43    _compopt_o_filenames
44    COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
45        $( compgen -d -- "$cur" ) )
46} &&
47complete -F _gzip gzip pigz
48
49# Local variables:
50# mode: shell-script
51# sh-basic-offset: 4
52# sh-indent-comment: t
53# indent-tabs-mode: nil
54# End:
55# ex: ts=4 sw=4 et filetype=sh
56