summaryrefslogtreecommitdiff
path: root/completions/apt
blob: 84811ae8a038bb8f8f57c6ead55ac47e5b57c410 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Debian apt-get(8) completion.

have apt-get &&
_apt_get()
{
    local cur prev special i

    COMPREPLY=()
    _get_comp_words_by_ref cur prev

    for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
        if [[ ${COMP_WORDS[i]} == @(install|remove|autoremove|purge|source|build-dep) ]]; then
            special=${COMP_WORDS[i]}
        fi
    done

    if [ -n "$special" ]; then
        case $special in
            remove|autoremove|purge)
                if [ -f /etc/debian_version ]; then
                    # Debian system
                    COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
                else
                    # assume RPM based
                    _rpm_installed_packages
                fi
                return 0
                ;;
            source)
                COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
                    2> /dev/null ) $( apt-cache dumpavail | \
                    command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
                return 0
                ;;
            *)
                COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
                    2> /dev/null ) )
                return 0
                ;;
        esac
    fi

    case $prev in
        -c|--config-file)
             _filedir
             return 0
             ;;
        -t|--target-release|--default-release)
             COMPREPLY=( $( apt-cache policy | \
                 command grep "release.o=Debian,a=$cur" | \
                 sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
             return 0
             ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o \
            --download-only --fix-broken --help --version --ignore-missing \
            --fix-missing --no-download --quiet --simulate --just-print \
            --dry-run --recon --no-act --yes --assume-yes --show-upgraded \
            --only-source --compile --build --ignore-hold --target-release \
            --no-upgrade --force-yes --print-uris --purge --reinstall \
            --list-cleanup --default-release --trivial-only --no-remove \
            --diff-only --no-install-recommends --tar-only --config-file \
            --option --auto-remove' -- "$cur" ) )
    else
        COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade \
            dist-upgrade install remove purge source build-dep \
            check clean autoclean autoremove' -- "$cur" ) )
    fi

    return 0
} &&
complete -F _apt_get apt-get

# Debian apt-cache(8) completion.
#
have apt-cache &&
_apt_cache()
{
    local cur prev special i

    COMPREPLY=()
    _get_comp_words_by_ref cur prev

    if [ "$cur" != show ]; then
        for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
        if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|madison|policy|rdepends|show?(pkg|src|)) ]]; then
            special=${COMP_WORDS[i]}
        fi
        done
    fi


    if [ -n "$special" ]; then
        case $special in
        add)
            _filedir
            return 0
            ;;

        showsrc)
            COMPREPLY=( $( apt-cache dumpavail | \
                command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
            return 0
            ;;

        *)
            COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) )
            return 0
            ;;

        esac
    fi


    case $prev in
         -c|-p|-s|--config-file|--pkg-cache|--src-cache)
             _filedir
             return 0
             ;;
         search)
             if [[ "$cur" != -* ]]; then
                return 0
             fi
             ;;
    esac

    if [[ "$cur" == -* ]]; then

        COMPREPLY=( $( compgen -W '-h -v -p -s -q -i -f -a -g -c \
                -o --help --version --pkg-cache --src-cache \
                --quiet --important --full --all-versions \
                --no-all-versions --generate --no-generate \
                --names-only --all-names --recurse \
                --config-file --option --installed' -- "$cur" ) )
    else

        COMPREPLY=( $( compgen -W 'add gencaches show showpkg showsrc \
                stats dump dumpavail unmet search search \
                depends rdepends pkgnames dotty xvcg \
                policy madison' -- "$cur" ) )

    fi


    return 0
} &&
complete -F _apt_cache apt-cache

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh