| _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 | |
| --output-all | |
| --pairs | |
| --raw | |
| --types | |
| --nofsroot | |
| --submounts | |
| --source | |
| --target | |
| --mountpoint | |
| --help | |
| --tree | |
| --real | |
| --pseudo | |
| --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 |