summaryrefslogtreecommitdiffstats
path: root/debian/bash_completion/cryptdisks_start
blob: 8cfac76765df4ae956d3425878ee6dcce9bb84fb (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
# cryptdisks_{start,stop} completion by first column of crypttab
#
# Copyright 2013 Claudius Hubig <cl_crds@chubig.net>, 2-clause BSD

_cryptdisks() {
    local action="$1" t
    for t in $( mawk -vt="${COMP_WORDS[COMP_CWORD]}" \
                '($1 !~ /^#/ && index($1,t) == 1) {print $1}' \
                "${TABFILE-"/etc/crypttab"}" ); do
        if [ "$action" = start -a ! -e "/dev/mapper/$t" ] ||
           [ "$action" = stop  -a   -e "/dev/mapper/$t" ]; then
           COMPREPLY+=( "$t" )
        fi
    done
    return 0;
}

_cryptdisks_start() {
    local i include_options=y
    COMPREPLY=()
    for (( i=0; i < COMP_CWORD-1; i++ )); do
        if [ "${COMP_WORDS[i]}" = "--" ] || [[ "${COMP_WORDS[i]}" != -* ]]; then
            include_options=n
            break
        fi
    done
    if [ "$include_options" = "y" ]; then
        for i in "-r" "--readonly" "--"; do
            if [[ "$i" == "${COMP_WORDS[COMP_CWORD]}"* ]]; then
                COMPREPLY+=( "$i" )
            fi
        done
    fi
    _cryptdisks start "$@"
}
_cryptdisks_stop()  {
    COMPREPLY=()
    _cryptdisks stop  "$@";
}

complete -F _cryptdisks_start cryptdisks_start
complete -F _cryptdisks_stop cryptdisks_stop