summaryrefslogtreecommitdiffstats
path: root/bash-completion/eject
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bash-completion/eject65
1 files changed, 65 insertions, 0 deletions
diff --git a/bash-completion/eject b/bash-completion/eject
new file mode 100644
index 0000000..27d0465
--- /dev/null
+++ b/bash-completion/eject
@@ -0,0 +1,65 @@
+_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)"
+ compopt -o bashdefault -o default
+ COMPREPLY=( $(compgen -W "$DEVS" $cur) )
+ return 0
+}
+complete -F _eject_module eject