# bash completion for samba -*- shell-script -*- _samba_resolve_order() { COMPREPLY=($(compgen -W 'lmhosts host wins bcast' -- "$cur")) } _samba_domains() { if [[ -n ${COMP_SAMBA_SCAN:-} ]]; then COMPREPLY=($(compgen -W '$(smbtree -N -D)' -- "$cur")) fi } _samba_hosts() { if [[ -n ${COMP_SAMBA_SCAN:-} ]]; then COMPREPLY=($(compgen -W "$( smbtree -N -S | command sed -ne 's/^[[:space:]]*\\\\*\([^[:space:]]*\).*/\1/p' )" -- "$cur")) fi } _samba_debuglevel() { COMPREPLY=($(compgen -W '{0..10}' -- "$cur")) } _samba_sockopts() { COMPREPLY=($(compgen -W 'SO_KEEPALIVE SO_REUSEADDR SO_BROADCAST TCP_NODELAY IPTOS_LOWDELAY IPTOS_THROUGHPUT SO_SNDBUF SO_RCVBUF SO_SNDLOWAT SO_RCVLOWAT' -- "$cur")) } _samba_signing() { COMPREPLY=($(compgen -W 'on off required' -- "$cur")) } _smbclient() { local cur prev words cword split _init_completion -s || return case $prev in --name-resolve | -!(-*)R) _samba_resolve_order return ;; -!(-*)t) COMPREPLY=($(compgen -W 'SJIS EUC JIS7 JIS8 JUNET HEX CAP' \ -- "$cur")) return ;; --configfile | --authentication-file | -!(-*)[sA]) _filedir return ;; --log-basename | --directory | -!(-*)[lD]) _filedir -d return ;; --socket-options | -!(-*)O) _samba_sockopts return ;; -!(-*)T) COMPREPLY=($(compgen -W 'c x I X F b g q r N a' -- "$cur")) return ;; --workgroup | -!(-*)W) _samba_domains return ;; --debuglevel | -!(-*)d) _samba_debuglevel return ;; --list | -!(-*)L) _samba_hosts return ;; --signing | -!(-*)S) _samba_signing return ;; --port | --message | --ip-address | --send-buffer | --user | --netbiosname | \ --scope | --tar | --command | --max-protocol | -!(-*)[pMIbUniTcm]) return ;; --help | --version | -!(-*)[?V]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _smbclient smbclient _smbget() { local cur prev words cword split _init_completion -s || return case $prev in --outputfile | --rcfile | -!(-*)[of]) _filedir return ;; --debuglevel | -!(-*)d) _samba_debuglevel return ;; --workgroup | -!(-*)w) _samba_domains return ;; --username | --password | --blocksize | -!(-*)[upb]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _smbget smbget _smbcacls() { local cur prev words cword split _init_completion -s || return case $prev in --configfile | --authentication-file | -!(-*)[As]) _filedir return ;; --log-basename | -!(-*)l) _filedir -d return ;; --debuglevel | -!(-*)d) _samba_debuglevel return ;; --signing) _samba_signing return ;; --socket-options | -!(-*)O) _samba_sockopts return ;; --workgroup | -!(-*)W) _samba_domains return ;; --help | --usage | --delete | --modify | --add | --set | --chown | --chgrp | \ --netbiosname | --scope | --user | -!(-*)[?DMaSCGniU]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _smbcacls smbcacls _smbcquotas() { local cur prev words cword split _init_completion -s || return case $prev in --configfile | --authentication-file | -!(-*)[sA]) _filedir return ;; --log-basename | -!(-*)l) _filedir -d return ;; --debuglevel | -!(-*)d) _samba_debuglevel return ;; --signing) _samba_signing return ;; --help | --usage | --user | --set | -!(-*)[?UuS]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _smbcquotas smbcquotas _smbpasswd() { local cur prev words cword _init_completion || return case $prev in -*r) _samba_hosts return ;; -*R) _samba_resolve_order return ;; -*c) _filedir return ;; -*D) _samba_debuglevel return ;; -*[Uhw]) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur")) fi } && complete -F _smbpasswd smbpasswd _smbtar() { local cur prev words cword _init_completion || return case $prev in -*[rt]) _filedir tar return ;; -*s) _samba_hosts return ;; -*l) _samba_debuglevel return ;; -*N) _filedir return ;; -*[pxbdu]) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) fi } && complete -F _smbtar smbtar _smbtree() { local cur prev words cword split _init_completion -s || return case $prev in --configfile | --authentication-file | -!(-*)[sA]) _filedir return ;; --log-basename | -!(-*)l) _filedir -d return ;; --debuglevel | -!(-*)d) _samba_debuglevel return ;; --signing | -!(-*)S) _samba_signing return ;; --help | --usage | --user | -!(-*)[?U]) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && complete -F _smbtree smbtree # ex: filetype=sh