[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 0098435c71f58bf8e28d2a89837f26eebf73d750

guillaume guillaume at localhost.localdomain
Sun Mar 14 18:27:46 UTC 2010


The following commit has been merged in the master branch:
commit b68a57211990107dd3bcd5ac1e19b66129d1556a
Author: guillaume <guillaume at localhost.localdomain>
Date:   Sun Mar 14 19:23:30 2010 +0100

    initial import

diff --git a/contrib/cryptsetup b/contrib/cryptsetup
new file mode 100644
index 0000000..e37fcb4
--- /dev/null
+++ b/contrib/cryptsetup
@@ -0,0 +1,114 @@
+# bash completion for cryptsetup
+
+_cryptsetup_name()
+{
+    COMPREPLY=( $( compgen -W '$(command ls /dev/mapper | grep -v control)' \
+        -- "$cur" ) )
+}
+
+_cryptsetup_device()
+{
+    cur=${cur:=/dev/}
+    _filedir
+}
+
+have cryptsetup &&
+_cryptsetup()
+{
+    local cur prev
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=`_get_pword`
+
+    case $prev in
+        --key-file|--master-key-file|--header-backup-file|-d)
+            _filedir
+            return 0;
+            ;;
+    esac
+
+    _get_first_arg
+    if [ -z $arg ]; then
+        if [[ "$cur" == -* ]]; then
+            COMPREPLY=( $( compgen -W '--hash -h --cipher -c\
+                --verify-passphrase -y --key-file -d --master-key-file \
+                --key-slot -S  --key-size -s --size -b --offset -o --skip \
+                -p --readonly --iter-time -i --batch-mode -q --timeout -t \
+                --tries -T --align-payload= --version' -- "$cur" ) )
+        else
+            COMPREPLY=( $( compgen -W 'create remove status resize luksFormat \
+                luksOpen luksClose luksSuspend luksResume luksAddKey \
+                luksRemoveKey luksKillSlot luksDelKey luksUUID isLuks \
+                luksDump luksHeaderBackup luksHeaderRestore' -- "$cur" ) )
+        fi
+    else
+        _count_args
+        case $arg in
+            create)
+                case $args in
+                    2)
+                        _cryptsetup_name
+                        ;;
+                    3)
+                        _cryptsetup_device
+                        ;;
+                esac
+                ;;
+            remove|status|resize|luksClose|luksSuspend|luksResume)
+                case $args in
+                    2)
+                        _cryptsetup_name
+                        ;;
+                esac
+                ;;
+            luksFormat|luksAddKey|luksRemoveKey)
+                case $args in
+                    2)
+                        _cryptsetup_device
+                        ;;
+                    3)
+                        _filedir
+                        ;;
+                esac
+                ;;
+            luksOpen)
+                case $args in
+                    2)
+                        _cryptsetup_device
+                        ;;
+                    3)
+                        _cryptsetup_name
+                        ;;
+                esac
+                ;;
+            luksKillSlot|luksDelKey|luksUUID|isLuks|luksDump)
+                case $args in
+                    2)
+                        _cryptsetup_device
+                        ;;
+                esac
+                ;;
+            luksHeaderBackup|luksHeaderRestore)
+                case $args in
+                    2)
+                        _cryptsetup_device
+                        ;;
+                    3)
+                        COMPREPLY=( '--header-backup-file' )
+                        ;;
+                    esac
+                ;;
+        esac
+    fi
+
+    return 0
+} &&
+complete -F _cryptsetup cryptsetup
+
+# 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

-- 
bash-completion



More information about the Bash-completion-commits mailing list