From 839f50f8a8876e6227dd102421b67bc9718708c3 Mon Sep 17 00:00:00 2001 From: Daniel Teunis Date: Wed, 18 Oct 2017 23:32:08 +0200 Subject: [PATCH 1/2] Add tarsnap autocompletion --- src/_tarsnap | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/_tarsnap diff --git a/src/_tarsnap b/src/_tarsnap new file mode 100644 index 0000000..c8b262a --- /dev/null +++ b/src/_tarsnap @@ -0,0 +1,56 @@ +#compdef tarsnap +# ------------------------------------------------------------------------------ +# Copyright (c) 2014-2017 Daniel Teunis - https://github.com/danteu +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for tarsnap 1.0.39 (http://tarsnap.com). +# +# ------------------------------------------------------------------------------ +# Author +# ------- +# +# * Daniel Teunis +# +# ------------------------------------------------------------------------------ + +_tarsnap() { + local -a commands + commands=( + '--fsck:Perform some integrity checks on the archives stored.' + '--fsck-prune:Run as "--fsck", but if corrupt archives are detected, prune the broken data.' + '--list-archives:Print the names of archives stored.' + '--nuke:Delete all of the archives stored.' + '--print-stats:Print global statistics concerning the archives stored.' + '-c:Create an archive containing the specified items and name.' + '-d:Delete the specified archive.' + '-r:Read the specified archive, convert it to a tar stream, and write it to stdout.' + '-t:List archive contents to stdout.' + '-x:Extract to disk from the archive.' + ) + + if (( CURRENT == 2 )); then + _describe -t commands 'commands' commands + fi + + return 0 +} From 70f69c15f921a71acbe94482446f7c4c59b0b8d9 Mon Sep 17 00:00:00 2001 From: Daniel Teunis Date: Tue, 24 Oct 2017 22:55:21 +0200 Subject: [PATCH 2/2] rewrite tarsnap autocompletion based on PR review --- src/_tarsnap | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/_tarsnap b/src/_tarsnap index c8b262a..17f47f1 100644 --- a/src/_tarsnap +++ b/src/_tarsnap @@ -33,24 +33,32 @@ # # ------------------------------------------------------------------------------ -_tarsnap() { - local -a commands - commands=( - '--fsck:Perform some integrity checks on the archives stored.' - '--fsck-prune:Run as "--fsck", but if corrupt archives are detected, prune the broken data.' - '--list-archives:Print the names of archives stored.' - '--nuke:Delete all of the archives stored.' - '--print-stats:Print global statistics concerning the archives stored.' - '-c:Create an archive containing the specified items and name.' - '-d:Delete the specified archive.' - '-r:Read the specified archive, convert it to a tar stream, and write it to stdout.' - '-t:List archive contents to stdout.' - '-x:Extract to disk from the archive.' - ) - - if (( CURRENT == 2 )); then - _describe -t commands 'commands' commands - fi - - return 0 -} +_arguments \ + '(- 1 *)--help[prints tarsnap help]' \ + '(- 1 *)--version[prints tarsnap version number]' \ + '(- 1 *)--verify-config[checks configuration files for syntactic errors]' \ + '--fsck[performs integrity checks on the stored archives]' \ + '--fsck-prune[performs integrity checks and prunes broken data]' \ + '--list-archives[prints names of stored archives]' \ + '--nuke[deletes all stored archives]' \ + '--print-stats[prints archive statistics]' \ + '--recover[recovers partial archive]' \ + '-c[creates archive]' \ + '-d[deletes specified archive]' \ + '-r[prints content of specified archive]' \ + '-t[lists archive content]' \ + '-x[extracts specified archive]' \ + '--lowmem[reduces memory usage by not caching small files]' \ + '--quiet[silences some warnings]' \ + '--keyfile[specifies keyfile]:keyfile:->file' \ + '--cachedir[specifies cache directory]:cachedir:->directory' \ + '-f[specifies archive name]:archivename:->file' + +case "$state" in + file) + _files + ;; + directory) + _path_files -/ + ;; +esac