mirror of
https://github.com/openSUSE/snapper.git
synced 2026-02-05 15:46:00 +01:00
* Add snbk visualize command * Add bash completion for snbk visualize * Add documentation for snbk visualize command * Remove access by reference for Rankdir enumeration * Prevent graph text from being translated
112 lines
2.9 KiB
Bash
112 lines
2.9 KiB
Bash
# snbk(8) autocompletion
|
|
|
|
_snbk()
|
|
{
|
|
local configdir="/etc/snapper/backup-configs"
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local GLOBAL_SNBK_OPTIONS='
|
|
-q --quiet
|
|
-v --verbose
|
|
--utc
|
|
--iso
|
|
-t --table-style
|
|
--machine-readable
|
|
--csvout
|
|
--jsonout
|
|
--separator
|
|
--no-headers
|
|
-b --backup-config
|
|
--no-dbus
|
|
--target-mode
|
|
--automatic
|
|
--version
|
|
--help
|
|
'
|
|
|
|
# see if the user selected a command already
|
|
local COMMANDS=(
|
|
"list-configs"
|
|
"list" "ls"
|
|
"transfer"
|
|
"restore"
|
|
"delete"
|
|
"transfer-and-delete"
|
|
"visualize")
|
|
|
|
local command i
|
|
for (( i=0; i < ${#words[@]}-1; i++ )); do
|
|
# Match word only either from start of string or after space to prevent options
|
|
# like -c from matching commands that have -c in them, like list-configs
|
|
if [[ ${COMMANDS[@]} =~ (^| )"${words[i]}" ]]; then
|
|
command=${words[i]}
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Global options autocomplete
|
|
case $prev in
|
|
--version|--help)
|
|
return 0
|
|
;;
|
|
--backup-config|-b)
|
|
local configs=()
|
|
# Get basenames of config files in "$configdir"
|
|
for configfile in "$configdir"/*.json; do
|
|
configfile="${configfile##*/}"
|
|
configfile="${configfile%.*}"
|
|
configs+=("${configfile}")
|
|
done
|
|
COMPREPLY=( $( compgen -W "${configs[*]}" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
--machine-readable)
|
|
COMPREPLY=( $( compgen -W 'csv json' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
# supported options per command
|
|
if [[ "$cur" == -* ]]; then
|
|
case $command in
|
|
visualize)
|
|
COMPREPLY=( $( compgen -W '--rankdir -r' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W "$GLOBAL_SNBK_OPTIONS" -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# specific command arguments
|
|
if [[ -n $command ]]; then
|
|
case $command in
|
|
visualize)
|
|
case "$prev" in
|
|
--rankdir|-r)
|
|
COMPREPLY=( $( compgen -W 'TB LR BT RL' -- "$cur" ) )
|
|
;;
|
|
source-tree|target-tree)
|
|
;;
|
|
*)
|
|
COMPREPLY=( $( compgen -W 'source-tree target-tree' -- "$cur" ) )
|
|
;;
|
|
esac
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# no command yet, show what commands we have
|
|
if [ "$command" = "" ]; then
|
|
#COMPREPLY=( $( compgen -W '${COMMANDS[@]} ${GLOBAL_SNBK_OPTIONS[@]}' -- "$cur" ) )
|
|
COMPREPLY=( $( compgen -W "${COMMANDS[*]}" -- "$cur" ) )
|
|
fi
|
|
|
|
return 0
|
|
} &&
|
|
complete -F _snbk snbk
|