summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYixun Lan <dlan@gentoo.org>2019-10-16 11:22:48 +0800
committerYixun Lan <dlan@gentoo.org>2019-10-16 11:22:48 +0800
commit52932ec67c365fa358d893e2af8353aeed186982 (patch)
tree2c4a1b67172ef47dbdc7473c8818d3e51c3f835a /app-backup/snapper/files
parentapp-misc/tmate: drop old versions (diff)
downloadgentoo-52932ec67c365fa358d893e2af8353aeed186982.tar.gz
gentoo-52932ec67c365fa358d893e2af8353aeed186982.tar.bz2
gentoo-52932ec67c365fa358d893e2af8353aeed186982.zip
app-backup/snapper: version bump 0.8.4, add bash-completion support
In this version, we also add bash-completion support But it's rather better to push bash-completion support to upstream, instead of maintaining it downstream. thanks 'Xu Weiping' for the contribution Closes: https://bugs.gentoo.org/697480 Package-Manager: Portage-2.3.76, Repoman-2.3.17 Signed-off-by: Yixun Lan <dlan@gentoo.org>
Diffstat (limited to 'app-backup/snapper/files')
-rw-r--r--app-backup/snapper/files/snapper.bash200
1 files changed, 200 insertions, 0 deletions
diff --git a/app-backup/snapper/files/snapper.bash b/app-backup/snapper/files/snapper.bash
new file mode 100644
index 000000000000..e5ca4134342a
--- /dev/null
+++ b/app-backup/snapper/files/snapper.bash
@@ -0,0 +1,200 @@
+_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