# bash completion for quota-tools -*- shell-script -*- _user_or_group() { local i # complete on groups if -g was given for (( i=1; i < cword; i++ )); do if [[ "${words[i]}" == -@(g|-group) ]]; then COMPREPLY=( $( compgen -g -- "$cur" ) ) return 0 fi done # otherwise complete on users COMPREPLY=( $( compgen -u -- "$cur" ) ) } _quota_parse_help() { local opts=$( _parse_help "$1" ) [[ $opts ]] || opts=$( _parse_usage "$1" ) # non-GNU? COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace } _quota_formats() { COMPREPLY=( $( compgen -W 'vfsold vfsv0 rpc xfs' -- "$cur" ) ) } _filesystems() { # Only list filesystems starting with "/", otherwise we also get #+ "binfmt_misc", "proc", "tmpfs", ... COMPREPLY=( $( compgen -W "$(awk '/^\// {print $1}' /etc/mtab)" \ -- "$cur" ) ) } _quota() { local cur prev words cword split _init_completion -s || return case $prev in -F|--format) _quota_formats return 0 ;; -h|--help|-V|--version) return 0 ;; esac $split && return 0 if [[ "$cur" == -* ]]; then _quota_parse_help "$1" else _user_or_group fi } && complete -F _quota -o default quota _setquota() { local cur prev words cword split _init_completion -s || return case $prev in -F|--format) _quota_formats return 0 ;; -p|--prototype) _user_or_group return 0 ;; -h|--help|-V|--version) return 0 ;; esac $split && return 0 if [[ "$cur" == -* ]]; then _quota_parse_help "$1" else local args _count_args case $args in 1) _user_or_group ;; 2) _filesystems ;; esac fi } && complete -F _setquota -o default setquota _edquota() { local cur prev words cword split _init_completion -s || return case $prev in -F|--format) _quota_formats return 0 ;; -f|--filesystem) _filesystems return 0 ;; -p|--prototype) _user_or_group return 0 ;; -h|--help|-V|--version) return 0 ;; esac $split && return 0 if [[ "$cur" == -* ]]; then _quota_parse_help "$1" else _user_or_group fi } && complete -F _edquota -o default edquota _quotacheck() { local cur prev words cword split _init_completion -s || return case $prev in -F|--format) _quota_formats return 0 ;; -h|--help|-V|--version) return 0 ;; esac $split && return 0 if [[ "$cur" == -* ]]; then _quota_parse_help "$1" else _filesystems fi } && complete -F _quotacheck -o default quotacheck repquota _quotaon() { local cur prev words cword split _init_completion -s || return case $prev in -F|--format) _quota_formats return 0 ;; -x|--xfs-command) COMPREPLY=( $( compgen -W 'delete enforce' -- "$cur" ) ) return 0 ;; -h|--help|-V|--version) return 0 ;; esac $split && return 0 if [[ "$cur" == -* ]]; then _quota_parse_help "$1" else _filesystems fi } && complete -F _quotaon -o default quotaon quotaoff # ex: ts=4 sw=4 et filetype=sh