~siretart/cryptsetup/debian

« back to all changes in this revision

Viewing changes to debian/bash_completion

  • Committer: Reinhard Tartler
  • Date: 2008-05-25 20:03:28 UTC
  • Revision ID: siretart@tauware.de-20080525200328-szhw0j5yw0p5kl33
import cryptsetup_1.0.6~pre1+svn45-1.dsc

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Bash command completion for cryptsetup
 
2
 
 
3
have cryptsetup &&
 
4
_cryptsetup()
 
5
{
 
6
    local cmd cur prev action actions luksactions argopts noargopts
 
7
 
 
8
    COMPREPLY=()
 
9
    cur="${COMP_WORDS[COMP_CWORD]}"
 
10
    prev="${COMP_WORDS[COMP_CWORD-1]}"
 
11
 
 
12
    actions="create remove status reload resize"
 
13
    luksactions="luksFormat luksOpen luksClose luksAddKey luksDelKey luksUUID isLuks luksDump"
 
14
    actions="$luksactions $actions"
 
15
 
 
16
    argopts="-c --cipher -h --hash -d --key-file -s --key-size -b --size"
 
17
    argopts="$argopts -o --offset -p --skip -i --iter-time -q --batch-mode"
 
18
    argopts="$argopts -t --timeout -T --tries"
 
19
    noargopts="-y --verify-passphrase --readonly --version --align-payload"
 
20
 
 
21
    # If previous word was an option requiring an argument, can't complete
 
22
    for argopt in $argopts ; do
 
23
        if [ "$argopt" = "$prev" ] ; then
 
24
            return
 
25
        fi
 
26
    done
 
27
 
 
28
    # If user typing an option, complete it
 
29
    if [[ $cur == -* ]] ; then
 
30
        COMPREPLY=( $(compgen -W "$argopts $noargopts" -- "$cur") )
 
31
        return
 
32
    fi
 
33
 
 
34
    # See if we already have an action
 
35
    action=""
 
36
    for word in "${COMP_WORDS[@]}" ; do
 
37
        for act in $actions ; do
 
38
            if [ "$word" == "$act" ] ; then
 
39
                action=$act
 
40
                break
 
41
            fi
 
42
        done
 
43
 
 
44
        if [ -n "$action" ] ; then
 
45
            break
 
46
        fi
 
47
    done
 
48
 
 
49
    # No action yet, complete it
 
50
    if [ -z "$action" ] ; then
 
51
        COMPREPLY=( $(compgen -W "$actions" -- "$cur") )
 
52
        return
 
53
    fi
 
54
 
 
55
    # Completion based on action
 
56
    case "$action" in
 
57
        "create")
 
58
            # create <name> <device>
 
59
            if [ $COMP_CWORD -gt 1 ] &&
 
60
                [ ${COMP_WORDS[COMP_CWORD-2]} == "create" ] ; then
 
61
                COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
 
62
            fi
 
63
        ;;
 
64
 
 
65
        "reload"|"remove"|"resize"|"status"|"luksClose")
 
66
            # action <name>
 
67
            MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
 
68
            OLDIFS="$IFS"
 
69
            IFS="
 
70
"
 
71
            COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
 
72
            IFS="$OLDIFS"
 
73
        ;;
 
74
 
 
75
        "luksDelKey")
 
76
            # luksDelKey <name> <key slot number>
 
77
            if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksDelKey" ] ; then
 
78
                # Get name
 
79
                MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
 
80
                OLDIFS="$IFS"
 
81
                IFS="
 
82
"
 
83
                COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
 
84
                IFS="$OLDIFS"
 
85
            fi
 
86
        ;;
 
87
 
 
88
        "luksAddKey"|"luksFormat")
 
89
            # action <name> [<key file>]
 
90
            if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksFormat" ] ; then
 
91
                # Get name
 
92
                MAPPINGS="$(ls /dev/mapper | fgrep --invert-match control)"
 
93
                OLDIFS="$IFS"
 
94
                IFS="
 
95
"
 
96
                COMPREPLY=( $(compgen -W "$MAPPINGS" -- "$cur") )
 
97
                IFS="$OLDIFS"
 
98
            elif [ ${COMP_WORDS[COMP_CWORD-2]} == "luksFormat" ] ; then
 
99
                # Get key file
 
100
                COMPREPLY=( $(compgen -f -- "$cur") )
 
101
            fi
 
102
        ;;
 
103
 
 
104
        "luksOpen")
 
105
            # luksOpen <device> <name>
 
106
            if [ ${COMP_WORDS[COMP_CWORD-1]} == "luksOpen" ] ; then
 
107
                COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
 
108
            fi
 
109
        ;;
 
110
 
 
111
        "isLuks"|"luksDump"|"luksUUID")
 
112
            # action <device>
 
113
            COMPREPLY=( $(compgen -f -X '!/dev*' -- "$cur") )
 
114
        ;;
 
115
    esac
 
116
}
 
117
[ "$have" ] && complete -o filenames -F _cryptsetup cryptsetup
 
118
 
 
119
# vim:set filetype=sh sts=4 sw=4: