diff options
Diffstat (limited to 'completions/quota')
-rw-r--r-- | completions/quota | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/completions/quota b/completions/quota new file mode 100644 index 00000000..b95c386a --- /dev/null +++ b/completions/quota @@ -0,0 +1,198 @@ +# bash completion for quota-tools + +_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 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |