| _findmnt_module() |
| { |
| local cur prev OPTS |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| case $prev in |
| '-p'|'--poll') |
| COMPREPLY=( $(compgen -W "=list" -- $cur) ) |
| return 0 |
| ;; |
| '-w'|'--timeout') |
| COMPREPLY=( $(compgen -W "timeout" -- $cur) ) |
| return 0 |
| ;; |
| '-d'|'--direction') |
| COMPREPLY=( $(compgen -W "forward backward" -- $cur) ) |
| return 0 |
| ;; |
| '-F'|'--tab-file') |
| local IFS=$'\n' |
| compopt -o filenames |
| COMPREPLY=( $(compgen -f -- $cur) ) |
| return 0 |
| ;; |
| '-N'|'--task') |
| local TID='' I ARR |
| for I in /proc/*/mountinfo; do IFS=/ read -ra ARR <<< "$I"; TID+="${ARR[2]} "; done |
| COMPREPLY=( $(compgen -W "$TID" -- $cur) ) |
| return 0 |
| ;; |
| '-O'|'--options') |
| local MTAB_3RD I |
| declare -a TMP_ARR |
| declare -A MNT_OPTS |
| while read MTAB_3RD; do |
| IFS=',' read -ra TMP_ARR <<<"$MTAB_3RD" |
| for I in ${TMP_ARR[@]}; do |
| MNT_OPTS[$I]='1' |
| done |
| done < <($1 -rno OPTIONS) |
| COMPREPLY=( $(compgen -W "${!MNT_OPTS[@]}" -- $cur) ) |
| return 0 |
| ;; |
| '-o'|'--output') |
| local prefix realcur OUTPUT_ALL OUTPUT |
| realcur="${cur##*,}" |
| prefix="${cur%$realcur}" |
| |
| OUTPUT_ALL="SOURCE TARGET FSTYPE OPTIONS VFS-OPTIONS |
| FS-OPTIONS LABEL UUID PARTLABEL PARTUUID |
| MAJ\:MIN ACTION OLD-TARGET OLD-OPTIONS |
| SIZE AVAIL USED USE% FSROOT TID ID |
| OPT-FIELDS PROPAGATION FREQ PASSNO" |
| |
| for WORD in $OUTPUT_ALL; do |
| if ! [[ $prefix == *"$WORD"* ]]; then |
| OUTPUT="$WORD $OUTPUT" |
| fi |
| done |
| compopt -o nospace |
| COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- $realcur) ) |
| return 0 |
| ;; |
| '-t'|'--types') |
| local TYPES |
| TYPES="adfs affs autofs cifs coda coherent cramfs |
| debugfs devpts efs 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" |
| COMPREPLY=( $(compgen -W "$TYPES" -- $cur) ) |
| return 0 |
| ;; |
| '-S'|'--source') |
| local DEV_MPOINT |
| DEV_MPOINT=$($1 -rno SOURCE | grep ^/dev) |
| COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) |
| return 0 |
| ;; |
| '-T'|'--target') |
| local DEV_MPOINT |
| DEV_MPOINT=$($1 -rno TARGET) |
| COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) |
| return 0 |
| ;; |
| '-M'|'--mountpoint') |
| local IFS=$'\n' |
| compopt -o filenames |
| COMPREPLY=( $(compgen -o dirnames -- ${cur:-"/"}) ) |
| return 0 |
| ;; |
| '-h'|'--help'|'-V'|'--version') |
| return 0 |
| ;; |
| esac |
| case $cur in |
| -*) |
| OPTS="--fstab |
| --mtab |
| --kernel |
| --poll |
| --timeout |
| --all |
| --ascii |
| --canonicalize |
| --df |
| --direction |
| --evaluate |
| --tab-file |
| --first-only |
| --invert |
| --json |
| --list |
| --task |
| --noheadings |
| --notruncate |
| --options |
| --output |
| --pairs |
| --raw |
| --types |
| --nofsroot |
| --submounts |
| --source |
| --target |
| --mountpoint |
| --help |
| --tree |
| --version" |
| COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) |
| return 0 |
| ;; |
| esac |
| local DEV_MPOINT |
| DEV_MPOINT=$($1 -rno TARGET,SOURCE) |
| COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) ) |
| return 0 |
| } |
| complete -F _findmnt_module findmnt |