# 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 fi done # otherwise complete on users COMPREPLY=($(compgen -u -- "$cur")) } _quota_parse_help() { local opts=$(_parse_help "$1") COMPREPLY=($(compgen -W '${opts:-$(_parse_usage "$1")}' -- "$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 ;; -h | --help | -V | --version) return ;; esac $split && return 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 ;; -p | --prototype) _user_or_group return ;; -h | --help | -V | --version) return ;; esac $split && return 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 ;; -f | --filesystem) _filesystems return ;; -p | --prototype) _user_or_group return ;; -h | --help | -V | --version) return ;; esac $split && return 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 ;; -h | --help | -V | --version) return ;; esac $split && return 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 ;; -x | --xfs-command) COMPREPLY=($(compgen -W 'delete enforce' -- "$cur")) return ;; -h | --help | -V | --version) return ;; esac $split && return if [[ $cur == -* ]]; then _quota_parse_help "$1" else _filesystems fi } && complete -F _quotaon -o default quotaon quotaoff # ex: filetype=sh