| _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 |