diff options
Diffstat (limited to 'bash-completion/eject')
-rw-r--r-- | bash-completion/eject | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/bash-completion/eject b/bash-completion/eject new file mode 100644 index 0000000..327ef1b --- /dev/null +++ b/bash-completion/eject @@ -0,0 +1,64 @@ +_eject_module() +{ + local cur prev OPTS + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + case $prev in + '-a'|'--auto'|'-i'|'--manualeject') + COMPREPLY=( $(compgen -W "off on" -- $cur) ) + return 0 + ;; + '-c'|'--changerslot') + # FIXME: there must be way to determine slots + COMPREPLY=( $(compgen -W "slot" -- $cur) ) + return 0 + ;; + '-x'|'--cdspeed') + COMPREPLY=( $(compgen -W "$(eject --listspeed 2>/dev/null)" -- $cur) ) + return 0 + ;; + '-h'|'--help'|'-V'|'--version') + return 0 + ;; + esac + case $cur in + -*) + OPTS="--auto + --changerslot + --default + --floppy + --force + --manualeject + --no-unmount + --no-partitions-unmount + --noop + --proc + --tape + --cdrom + --scsi + --trayclose + --traytoggle + --verbose + --cdspeed + --listspeed + --help + --version" + COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) + return 0 + ;; + esac + local DEVS + DEVS="$(for I in /sys/class/block/*/removable; do + if [ $(cat $I) -ne 0 ]; then + OLD_IFS=$IFS + IFS='/'; + ARR=($I) + echo "/dev/${ARR[4]}" + IFS=$OLD_IFS + fi + done)" + COMPREPLY=( $(compgen -W "$DEVS" $cur) ) + return 0 +} +complete -F _eject_module eject |