You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
5.8 KiB
201 lines
5.8 KiB
_snapper()
|
|
{
|
|
local configdir="/etc/snapper/configs"
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local GLOGAL_SNAPPER_OPTIONS='
|
|
-q --quiet
|
|
-v --verbose
|
|
--utc
|
|
--iso
|
|
-t --table-style
|
|
-c --config
|
|
-r --root
|
|
--no-dbus
|
|
--version
|
|
--help
|
|
'
|
|
|
|
# see if the user selected a command already
|
|
local COMMANDS=(
|
|
"list-configs" "create-config" "delete-config" "set-config"
|
|
"list" "ls"
|
|
"create" "modify" "delete" "remove" "rm"
|
|
"mount" "umount"
|
|
"status" "diff" "xadiff"
|
|
"undochange" "rollback"
|
|
"setup-quota"
|
|
"cleanup")
|
|
|
|
local command i
|
|
for (( i=0; i < ${#words[@]}-1; i++ )); do
|
|
if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
|
|
command=${words[i]}
|
|
break
|
|
fi
|
|
done
|
|
|
|
case $prev in
|
|
--version|--help)
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
# supported options per command
|
|
if [[ "$cur" == -* ]]; then
|
|
case $command in
|
|
create-config)
|
|
COMPREPLY=( $( compgen -W '--fstype -f
|
|
--templete -t' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
list|ls)
|
|
COMPREPLY=( $( compgen -W '--type -t
|
|
--all-configs -a' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
create)
|
|
COMPREPLY=( $( compgen -W '--type -t
|
|
--pre-number
|
|
--print-number -p
|
|
--description -d
|
|
--cleanup-algorithm -c
|
|
--userdata -u
|
|
--command' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
modify)
|
|
COMPREPLY=( $( compgen -W '--description -d
|
|
--cleanup-algorithm -c
|
|
--userdata -u' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
delete|remove|rm)
|
|
COMPREPLY=( $( compgen -W '--sync -s
|
|
' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
status)
|
|
COMPREPLY=( $( compgen -W '--output -o
|
|
' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
diff)
|
|
COMPREPLY=( $( compgen -W '--input -i
|
|
--diff-cmd
|
|
--extensions -x' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
undochange)
|
|
COMPREPLY=( $( compgen -W '--input -i
|
|
' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
rollback)
|
|
COMPREPLY=( $( compgen -W '--print-number -p
|
|
--description -d
|
|
--cleanup-algorithm -c
|
|
--userdata -u' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "$GLOGAL_SNAPPER_OPTIONS" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# specific command arguments
|
|
if [[ -n $command ]]; then
|
|
case $command in
|
|
create-config)
|
|
case "$prev" in
|
|
--fstype|-f)
|
|
COMPREPLY=( $( compgen -W 'btrfs ext4 lvm(xfs) lvm(ext4)
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
list)
|
|
case "$prev" in
|
|
--type|-t)
|
|
COMPREPLY=( $( compgen -W 'all single pre-post
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
create)
|
|
case "$prev" in
|
|
--type|-t)
|
|
COMPREPLY=( $( compgen -W 'single pre post
|
|
' -- "$cur" ) )
|
|
;;
|
|
--pre-number)
|
|
COMPREPLY=( $( compgen -W '
|
|
' -- "$cur" ) )
|
|
;;
|
|
--cleanup-algorithm|-c)
|
|
COMPREPLY=( $( compgen -W 'empty-pre-post timeline number
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
modify)
|
|
case "$prev" in
|
|
--cleanup-algorithm|-c)
|
|
COMPREPLY=( $( compgen -W 'empty-pre-post timeline number
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
status)
|
|
case "$prev" in
|
|
--output|-o)
|
|
COMPREPLY=( $( compgen -f -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
cleanup)
|
|
case "$prev" in
|
|
empty-pre-post|timeline|number)
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W 'empty-pre-post timeline number
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
diff)
|
|
return 0
|
|
;;
|
|
undochange)
|
|
return 0
|
|
;;
|
|
rollback)
|
|
case "$prev" in
|
|
--cleanup-algorithm|-c)
|
|
COMPREPLY=( $( compgen -W 'empty-pre-post timeline number
|
|
' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# no command yet, show what commands we have
|
|
if [ "$command" = "" ]; then
|
|
COMPREPLY=( $( compgen -W '${COMMANDS[@]} ${GLOGAL_SNAPPER_OPTIONS[@]}' -- "$cur" ) )
|
|
fi
|
|
|
|
return 0
|
|
} &&
|
|
complete -F _snapper snapper
|