diff options
author | Yixun Lan <dlan@gentoo.org> | 2019-10-16 11:22:48 +0800 |
---|---|---|
committer | Yixun Lan <dlan@gentoo.org> | 2019-10-16 11:22:48 +0800 |
commit | 52932ec67c365fa358d893e2af8353aeed186982 (patch) | |
tree | 2c4a1b67172ef47dbdc7473c8818d3e51c3f835a /app-backup/snapper/files | |
parent | app-misc/tmate: drop old versions (diff) | |
download | gentoo-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.bash | 200 |
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 |