mirror of https://github.com/digint/btrbk
contrib: bash: completion.bash: complete options everywhere
parent
e4f27632a0
commit
ce660a4989
|
@ -4,7 +4,7 @@ _btrbk_init_cmds()
|
|||
#
|
||||
# for example, for this command:
|
||||
#
|
||||
# btrbk -v list config
|
||||
# btrbk -v list config --long
|
||||
#
|
||||
# then $cmds is:
|
||||
#
|
||||
|
@ -16,94 +16,74 @@ _btrbk_init_cmds()
|
|||
for ((i = 1; i < cword; i++)); do
|
||||
[[ ${words[i]} != -* ]] && cmds+=(${words[i]})
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
_btrbk()
|
||||
{
|
||||
local cur prev words cword split
|
||||
local cur prev words cword split cmds
|
||||
_init_completion -s || return
|
||||
_btrbk_init_cmds || return
|
||||
|
||||
case "$prev" in
|
||||
'-c' | '--config')
|
||||
_filedir
|
||||
return
|
||||
;;
|
||||
'--exclude')
|
||||
return
|
||||
;;
|
||||
'-l' | '--loglevel')
|
||||
COMPREPLY=($(compgen -W 'error warn info debug trace' -- "$cur"))
|
||||
return
|
||||
;;
|
||||
'--format')
|
||||
COMPREPLY=($(compgen -W 'table long raw' -- "$cur"))
|
||||
return
|
||||
;;
|
||||
'--lockfile')
|
||||
_filedir
|
||||
return
|
||||
;;
|
||||
'--override')
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
$split && return
|
||||
|
||||
local cmds
|
||||
_btrbk_init_cmds
|
||||
if [[ $cur == -* ]]; then
|
||||
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
||||
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
||||
else
|
||||
if [[ ! -v 'cmds[0]' ]]; then
|
||||
COMPREPLY=($(compgen -W 'run dryrun snapshot resume prune archive clean stats list usage origin diff ls' -- "$cur"))
|
||||
fi
|
||||
fi
|
||||
|
||||
case "${cmds[0]}" in
|
||||
'archive')
|
||||
# <source>
|
||||
if [[ ! -v 'cmds[1]' ]]; then
|
||||
_filedir -d
|
||||
return
|
||||
fi
|
||||
# <target>
|
||||
if [[ ! -v 'cmds[2]' ]]; then
|
||||
elif [[ ! -v 'cmds[2]' ]]; then
|
||||
_filedir -d
|
||||
return
|
||||
fi
|
||||
# [--raw]
|
||||
if [[ $cur == -* ]]; then
|
||||
COMPREPLY=($(compgen -W '--raw' -- "$cur"))
|
||||
return
|
||||
elif [[ $cur == -* ]]; then
|
||||
COMPREPLY+=($(compgen -W '--raw' -- "$cur"))
|
||||
fi
|
||||
;;
|
||||
'list')
|
||||
if [[ ! -v 'cmds[1]' ]]; then
|
||||
COMPREPLY=($(compgen -W 'backups snapshots latest config source volume target' -- "$cur"))
|
||||
return
|
||||
fi
|
||||
;;
|
||||
'origin')
|
||||
# <subvolume>
|
||||
if [[ ! -v 'cmds[1]' ]]; then
|
||||
_filedir -d
|
||||
return
|
||||
fi
|
||||
;;
|
||||
'ls')
|
||||
# <path>|<url>...
|
||||
_filedir -d
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ $cur == -* ]]; then
|
||||
# only complete options before commands
|
||||
if [[ ! -v 'cmds[0]' ]]; then
|
||||
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
||||
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
||||
return
|
||||
fi
|
||||
else
|
||||
if [[ ! -v 'cmds[0]' ]]; then
|
||||
COMPREPLY=($(compgen -W 'run dryrun snapshot resume prune archive clean stats list usage origin diff ls' -- "$cur"))
|
||||
return
|
||||
fi
|
||||
fi
|
||||
} && complete -F _btrbk btrbk
|
||||
|
||||
_lsbtr()
|
||||
|
@ -114,23 +94,18 @@ _lsbtr()
|
|||
case "$prev" in
|
||||
'-c' | '--config')
|
||||
_filedir
|
||||
return
|
||||
;;
|
||||
'--override')
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
$split && return
|
||||
|
||||
if [[ $cur == -* ]]; then
|
||||
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
||||
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
||||
return
|
||||
else
|
||||
# <path>|<url>...
|
||||
_filedir -d
|
||||
return
|
||||
fi
|
||||
} && complete -F _lsbtr lsbtr
|
||||
|
||||
|
|
Loading…
Reference in New Issue