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.
gentoo-overlay/app-backup/snapper/files/snapper.bash

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