122 lines
2.8 KiB
Plaintext
122 lines
2.8 KiB
Plaintext
|
_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')
|
||
|
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 < <(findmnt -rno OPTIONS)
|
||
|
COMPREPLY=( $(compgen -W "$(echo ${!MNT_OPTS[@]})" -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
'-o'|'--output')
|
||
|
# FIXME: how to append to a string with compgen?
|
||
|
local OUTPUT
|
||
|
OUTPUT="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"
|
||
|
compopt -o nospace
|
||
|
COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
'-t'|'--types')
|
||
|
local TYPES
|
||
|
TYPES="adfs affs autofs cifs coda coherent cramfs
|
||
|
debugfs devpts efs ext 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
|
||
|
xiafs"
|
||
|
COMPREPLY=( $(compgen -W "$TYPES" -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
'-S'|'--source')
|
||
|
local DEV_MPOINT
|
||
|
DEV_MPOINT=$(findmnt -rno SOURCE | grep ^/dev)
|
||
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
'-T'|'--target')
|
||
|
local DEV_MPOINT
|
||
|
DEV_MPOINT=$(findmnt -rno TARGET)
|
||
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
esac
|
||
|
case $cur in
|
||
|
-*)
|
||
|
OPTS="-s --fstab
|
||
|
-m --mtab
|
||
|
-k --kernel
|
||
|
-p --poll
|
||
|
-w --timeout
|
||
|
-A --all
|
||
|
-a --ascii
|
||
|
-c --canonicalize
|
||
|
-D --df
|
||
|
-d --direction
|
||
|
-e --evaluate
|
||
|
-F --tab-file
|
||
|
-f --first-only
|
||
|
-i --invert
|
||
|
-l --list
|
||
|
-N --task
|
||
|
-n --noheadings
|
||
|
-u --notruncate
|
||
|
-O --options
|
||
|
-o --output
|
||
|
-P --pairs
|
||
|
-r --raw
|
||
|
-t --types
|
||
|
-v --nofsroot
|
||
|
-R --submounts
|
||
|
-S --source
|
||
|
-T --target
|
||
|
-h --help
|
||
|
-V --version"
|
||
|
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
|
||
|
return 0
|
||
|
;;
|
||
|
esac
|
||
|
local DEV_MPOINT
|
||
|
DEV_MPOINT=$(findmnt -rno TARGET,SOURCE)
|
||
|
COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
|
||
|
return 0
|
||
|
}
|
||
|
complete -F _findmnt_module findmnt
|