#compdef udisksctl # # ------------------------------------------------------------------------------ # Copyright (C) 2007-2011 David Zeuthen # Copyright (C) 2007-2011 Red Hat, Inc. # All Rights Reserved. # # The source code for the udisks daemon and command-line tools are # licensed to you under the GNU General Public License. Either version 2 # of the License, or (at your option) any later version. # # https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for udisksctl # (https://cgit.freedesktop.org/udisks/tree/tools) # # ------------------------------------------------------------------------------ # Authors # ------- # # * Damir Jelić [1] # # [1] https://lists.freedesktop.org/archives/devkit-devel/2014-February/001554.html # _paths() { local -a _path_list for _path in $(_call_program paths "udisksctl complete \"udisksctl $words\" $CURSOR"); do _path_list+=$_path done _describe 'paths' _path_list } _filesystems() { _fs_types=( 'adfs' 'affs' 'autofs' 'cifs' 'coda' 'coherent' 'cramfs' 'debugfs' 'devpts' 'efs' 'ext' 'ext2' 'ext3' 'ext4' 'hfs' 'hfsplus' 'hpfs' 'iso9660' 'jfs' 'minix' 'msdos' 'ncpfs' 'nfs' 'nfs4' 'ntfs' 'proc' 'qnx4' 'ramfs' 'reiserfs' 'romfs' 'squashfs' 'smbfs' 'sysv' 'tmpfs' 'ubifs' 'udf' 'ufs' 'umsdos' 'usbfs' 'vfat' 'xenix' 'xfs' 'xiafs' ) _describe 'file system types' _fs_types } _udisksctl() { typeset -A opt_args local curcontext="$curcontext" state line _arguments -C \ '1:udisksctl commands:->cmds' \ '*:: :->cmd_args' \ case $state in cmds) local commands; commands=( 'help: Show help' 'info: Show info about an object' 'dump: Show info about all object' 'status: Shows high-level status' 'monitor: Monitor changes to objects' 'mount: Mount a filesystem' 'unmount: Unmount a filesystem' 'unlock: Unlock an encrypted device' 'lock: Lock an encrypted device' 'loop-setup: Set-up a loop device' 'loop-delete: Delete a loop device' 'smart-simulate: Set SMART data for a drive' ) _describe -t commands 'udisksctl commands' commands ;; cmd_args) case $words[1] in info) _arguments \ {-p,--object-path}'[Object to get information about]:object path:_paths' \ {-b,--block-device}'[Block device to get information about]:block device:_paths' \ {-d,--drive}'[Drive to get information about]:drives:_paths' \ ;; mount) _arguments \ {-p,--object-path}'[Object to mount]:object path:_paths' \ {-b,--block-device}'[Block device to mount]:block device:_paths' \ {-t,--filesystem-type}'[Filesystem type to use]:fs type:_filesystems' \ {-o,--options}'[Mount options]' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; unmount) _arguments \ {-p,--object-path}'[Object to unmount]:object path:_paths' \ {-b,--block-device}'[Block device to unmount]:block device:_paths' \ {-f,--force}'[Force/lazy unmount]' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; unlock|lock) _arguments \ {-p,--object-path}'[Object to lock/unlock]:object path:_paths' \ {-b,--block-device}'[Block device to lock/unlock]:block device:_paths' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; loop-setup) _arguments \ {-f,--file}'[File to set-up a loop device for]:files:_files' \ {-r,--read-only}'[Setup read-only device]' \ {-o,--offset}'[Start at bytes into file]:offset in bytes:' \ {-s,--size}'[Limit size to bytes]:limit in bytes:' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; loop-delete) _arguments \ {-p,--object-path}'[Object for loop device to delete]:object path:_paths' \ {-b,--block-device}'[Loop device to delete]:block device:_paths' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; smart-simulate) _arguments \ {-f,--file}'[File with libatasmart blob]:files:_files' \ {-p,--object-path}'[Object to get information about]:object path:_paths' \ {-b,--block-device}'[Block device to get information about]:block device:_paths' \ '(--no-user-interaction)--no-user-interaction[Do not authenticate the user if needed]' \ ;; esac ;; esac } _udisksctl "$@"