diff options
Diffstat (limited to 'completions/quota')
-rw-r--r-- | completions/quota | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/completions/quota b/completions/quota new file mode 100644 index 0000000..f5f9cc8 --- /dev/null +++ b/completions/quota @@ -0,0 +1,191 @@ +# 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 |