| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446 | 
							- #compdef borg
 
- # -------
 
- #
 
- # To Install:
 
- #
 
- # Copy this file to /usr/[local]/share/zsh/site-functions/
 
- #
 
- # -------
 
- # borgbackup ZSH completion
 
- # Kevin Gravier 2017 <kevin@mrkmg.com>
 
- #
 
- # The MIT License (MIT)
 
- # Copyright (c) 2017 Kevin
 
- # 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.
 
- _borg() {
 
-     typeset -A opt_args
 
-     local -a borg_possible_commands borg_possible_key_commands commands keyCommands borg_common_options
 
-     local command keyCommand item subItem
 
-     borg_common_options=({-h,--help}'[show this help message and exit]'
 
-                              --critical'[work on log level CRITICAL]'
 
-                              --error'[work on log level ERROR]'
 
-                              --warning'[work on log level WARNING (default)]'
 
-                              {--info,-v,--verbose}'[work on log level INFO]'
 
-                              --debug'[work on log level DEBUG]'
 
-                              --default-topic'[enable TOPIC debugging (can be specified multiple times).]:TOPIC'
 
-                              {-p,--progress}'[show progress information]'
 
-                              --log-json'[Output one JSON object per log line instead of formatted text.]'
 
-                              --lock-wait'[wait at most SECONDS for acquiring a repository/cache lock (default: 1).]:SECONDS'
 
-                              --show-version'[show/log the borg version]'
 
-                              --show-rc'[show/log the return code (rc)]'
 
-                              --umask'[set umask to M (local and remote, default: 0077)]:umask'
 
-                              --remote-path'[set remote path to executable (default: "borg")]:_files'
 
-                              --remote-ratelimit'[set remote network upload rate limit in kiByte/s (default: 0=unlimited)]:RATE'
 
-                              --consider-part-files'[treat part files like normal files (e.g. to list/extract them)]'
 
-                              --debug-profile'[write execution profile in Borg format into FILE.]:_files'
 
-                              --rsh'[use COMMAND instead of ssh]:COMMAND')
 
-     borg_possible_commands=(init create extract check rename list diff delete prune compact info mount umount key upgrade recreate export-tar serve config with-lock break-lock benchmark help)
 
-     borg_possible_key_commands=(change-passphrase import export)
 
-     command=""
 
-     keyCommand=""
 
-     for item in $words; do
 
-         (( ${borg_possible_commands[(I)$item]} )) && command=$item
 
-         (( ${borg_possible_key_commands[(I)$item]} )) && keyCommand=$item
 
-     done
 
-     case $command in
 
-         (init)
 
-             _arguments \
 
-                 '2:repo:_files'\
 
-                 {-e,--encryption}'[select encryption key mode]:mode:(none keyfile keyfile-blake2 repokey repokey-blake2 authenticated authenticated-blake2)'\
 
-                 --append-only'[only allow appending to repository segment files]'\
 
-                 --storage-quota'[Override storage quota of the repository]:QUOTA'\
 
-                 --make-parent-dirs'[create parent directories]'\
 
-                 $borg_common_options
 
-             ;;
 
-         (create)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:path:_files'\
 
-                 {-n,--dry-run}'[do not create a backup archive]'\
 
-                 {-s,--stats}'[print statistics for the created archive]'\
 
-                 --list'[output verbose list of items (files, dirs, ...)]'\
 
-                 --filter'[only display items with the given status characters]:STATUSCHARS'\
 
-                 --json'[output stats as JSON. Implies --stats.]'\
 
-                 --no-cache-sync'[experimental: do not synchronize the cache. Implies not using the files cache.]'\
 
-                 --stdin-name'[use NAME in archive for stdin data]:NAME'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 --exclude-caches'[exclude directories that contain a CACHEDIR.TAG file ]'\
 
-                 --exclude-if-present'[exclude directories that are tagged by containing a filesystem object with the given NAME]:NAME'\
 
-                 --keep-exclude-tags'[if tag objects are specified with --exclude-if-present, don’t omit the tag objects themselves]'\
 
-                 {-x,--one-file-system}'[stay in the same file system ]'\
 
-                 --numeric-owner'[only store numeric user and group identifiers]'\
 
-                 --noatime'[do not store atime into archive]'\
 
-                 --nobirthtime'[do not store birthtime (creation date) into archive]'\
 
-                 --nobsdflags'[do not read and store bsdflags (e.g. NODUMP, IMMUTABLE) into archive]'\
 
-                 --files-cache'[operate files cache in MODE. default: ctime,size,inode]:mode:(ctime,size,inode mtime,size,inode ctime,size mtime,size rechunk,ctime rechunk,mtime disabled)'\
 
-                 --read-special'[open and read block and char device files as well as FIFOs as if they were regular files.]'\
 
-                 --comment'[add a comment text to the archive]:COMMENT'\
 
-                 --timestamp'[manually specify the archive creation date/time]:TIMESTAMP'\
 
-                 --timestamp'[manually specify the archive creation date/time by a reference file/directory]:_files'\
 
-                 {-c,--checkpoint-interval}'[write checkpoint every SECONDS seconds]:SECONDS'\
 
-                 --chunker-params'[specify the chunker parameters]:PARAMS'\
 
-                 {-C,--compression}'[select compression algorithm]:COMPRESSION'\
 
-                 $borg_common_options
 
-             ;;
 
-         (extract)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:path:_files'\
 
-                 --list'[output verbose list of items (files, dirs, ...)]'\
 
-                 {-n,--dry-run}'[do not actually change any files]'\
 
-                 --numeric-owner'[only obey numeric user and group identifiers]'\
 
-                 --nobsdflags'[do not extract/set bsdflags (e.g. NODUMP, IMMUTABLE)]'\
 
-                 --stdout'[write all extracted data to stdout]'\
 
-                 --sparse'[create holes in output sparse file from all-zero chunks]'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 --strip-components'[Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped.]:NUMBER'\
 
-                 $borg_common_options
 
-             ;;
 
-         (check)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 --repository-only'[only perform repository checks]'\
 
-                 --archives-only'[only perform archives checks]'\
 
-                 --verify-data'[perform cryptographic archive data integrity verification]'\
 
-                 --repair'[attempt to repair any inconsistencies found]'\
 
-                 --save-space'[work slower, but using less space]'\
 
-                 --max-duration'[partial repo check for max. SECONDS]:SECONDS'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 --sort-by'[Comma-separated list of sorting keys]:keys:(timestamp name id)'\
 
-                 --first'[consider first N archives after other filters were applied]:N'\
 
-                 --last'[consider last N archives after other filters were applied]:N'\
 
-                 $borg_common_options
 
-             ;;
 
-         (rename)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:name:NAME'\
 
-                 $borg_common_options
 
-             ;;
 
-         (list)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '*:path:_files'\
 
-                 --short'[only print file/directory names, nothing else]'\
 
-                 --format'[specify format for file listing]:FORMAT'\
 
-                 --json'[Only valid for listing repository contents. Format output as JSON.]'\
 
-                 --json-lines'[Only valid for listing archive contents. Format output as JSON Lines. ]'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 --sort-by'[Comma-separated list of sorting keys]:keys:(timestamp name id)'\
 
-                 --first'[consider first N archives after other filters were applied]:N'\
 
-                 --last'[consider last N archives after other filters were applied]:N'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                $borg_common_options
 
-             ;;
 
-         (diff)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:archives:__borg_archive2'\
 
-                 '*:path:_files'\
 
-                 --numeric-owner'[only obey numeric user and group identifiers]'\
 
-                 --same-chunker-params'[override check of chunker parameters.]'\
 
-                 --sort'[sort the output lines by file path.]'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 $borg_common_options
 
-             ;;
 
-         (delete)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '*:archives:archives'\
 
-                 --dry-run'[do not change the repository]'\
 
-                 {-s,--stats}'[print statistics for the deleted archive]'\
 
-                 --cache-only'[delete only the local cache for the given repository]'\
 
-                 --force'[force deletion of corrupted archives, use --force --force in case --force does not work.]'\
 
-                 --save-space'[work slower, but using less space]'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 --sort-by'[Comma-separated list of sorting keys]:keys:(timestamp name id)'\
 
-                 --first'[consider first N archives after other filters were applied]:N'\
 
-                 --last'[consider last N archives after other filters were applied]:N'\
 
-                 $borg_common_options
 
-             ;;
 
-         (prune)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 {-n,--dry-run}'[do not change repository]'\
 
-                 --force'[force pruning of corrupted archives]'\
 
-                 {-s,--stats}'[print statistics for the deleted archive]'\
 
-                 --list'[output verbose list of archives it keeps/prunes]'\
 
-                 --keep-within'[keep all archives within this time interval]:INTERVAL'\
 
-                 {--keep-last,--keep-secondly}'[number of secondly archives to keep]:N'\
 
-                 --keep-minutely'[number of minutely archives to keep]:N'\
 
-                 {-H,--keep-hourly}'[number of hourly archives to keep]:N'\
 
-                 {-d,--keep-daily}'[number of daily archives to keep]:N'\
 
-                 {-w,--keep-weekly}'[number of weekly archives to keep]:N'\
 
-                 {-m,--keep-monthly}'[number of monthly archives to keep]:N'\
 
-                 {-y,--keep-yearly}'[number of yearly archives to keep]:N'\
 
-                 --save-space'[work slower, but using less space]'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 $borg_common_options
 
-             ;;
 
-         (compact)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 --cleanup-commits'[cleanup commit-only 17-byte segment files]'\
 
-                 $borg_common_options
 
-             ;;
 
-         (info)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 --json'[format output as JSON]'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 --sort-by'[Comma-separated list of sorting keys]:keys:(timestamp name id)'\
 
-                 --first'[consider first N archives after other filters were applied]:N'\
 
-                 --last'[consider last N archives after other filters were applied]:N'\
 
-                 $borg_common_options
 
-             ;;
 
-         (mount)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:mountpoint:_files'\
 
-                 {-f,--foreground}'[stay in foreground, do not daemonize]'\
 
-                 -o'[Extra mount options]:options:(ac_attr_timeout= allow_damaged_files allow_other allow_root attr_timeout= auto auto_cache auto_unmount default_permissions entry_timeout= gid= group_id= kernel_cache max_read= negative_timeout= noauto noforget remember= remount rootmode= uid= umask= user user_id= versions)'\
 
-                 {-P,--prefix}'[only consider archive names starting with this prefix.]:PREFIX'\
 
-                 {-a,--glob-archives}'[only consider archive names matching the glob]:GLOB'\
 
-                 --sort-by'[Comma-separated list of sorting keys]:keys:(timestamp name id)'\
 
-                 --first'[consider first N archives after other filters were applied]:N'\
 
-                 --last'[consider last N archives after other filters were applied]:N'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 --strip-components'[Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped.]:NUMBER'\
 
-                 $borg_common_options
 
-             ;;
 
-         (umount)
 
-             _arguments \
 
-                 '2:mountpoint:_files'\
 
-                 $borg_common_options
 
-             ;;
 
-         (key)
 
-             case $keyCommand in
 
-                 (change-passphrase)
 
-                     _arguments \
 
-                         '2:subCommand:(change-passphrase import export)'\
 
-                         '3:archives:__borg_archive'\
 
-                         $borg_common_options
 
-                     ;;
 
-                 (export)
 
-                     _arguments \
 
-                         '2:subCommand:(change-passphrase import export)'\
 
-                         '3:archives:__borg_archive'\
 
-                         '4:path:_files'\
 
-                         --paper'[Create an export suitable for printing and later type-in]'\
 
-                         --qr-html'[Create an html file suitable for printing and later type-in or qr scan]'\
 
-                         $borg_common_options
 
-                     ;;
 
-                 (import)
 
-                     _arguments \
 
-                         '2:subCommand:(change-passphrase import export)'\
 
-                         '3:archives:__borg_archive'\
 
-                         '4:path:_files'\
 
-                         --paper'[interactively import from a backup done with --paper]'\
 
-                         $borg_common_options
 
-                     ;;
 
-                 *)
 
-                     _arguments \
 
-                         '2:subCommand:(change-passphrase import export)'\
 
-                         $borg_common_options
 
-                     ;;
 
-                 esac
 
-             ;;
 
-         (upgrade)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 {-n,--dry-run}'[do not change repository]'\
 
-                 --inplace'[rewrite repository in place, with no chance of going back to older versions of the repository.]'\
 
-                 --force'[Force upgrade]'\
 
-                 --tam'[Enable manifest authentication (in key and cache).]'\
 
-                 --disable-tam'[Disable manifest authentication (in key and cache).]'\
 
-                 $borg_common_options
 
-             ;;
 
-         (recreate)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:path:_files'\
 
-                 --list'[output verbose list of items (files, dirs, ...)]'\
 
-                 --filter'[only display items with the given status characters]:STATUSCHARS'\
 
-                 {-n,--dry-run}'[do not create a backup archive]'\
 
-                 {-s,--stats}'[print statistics at end]'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 --exclude-caches'[exclude directories that contain a CACHEDIR.TAG file ]'\
 
-                 --exclude-if-present'[exclude directories that are tagged by containing a filesystem object with the given NAME]:NAME'\
 
-                 --keep-exclude-tags'[if tag objects are specified with --exclude-if-present, don’t omit the tag objects themselves]'\
 
-                 --target'[create a new archive with the name ARCHIVE]:ARCHIVE'\
 
-                 {-c,--checkpoint-interval}'[write checkpoint every SECONDS seconds]:SECONDS'\
 
-                 --comment'[add a comment text to the archive]:COMMENT'\
 
-                 --timestamp'[manually specify the archive creation date/time]:TIMESTAMP'\
 
-                 {-C,--compression}'[select compression algorithm]:COMPRESSION'\
 
-                 --recompress'[recompress data chunks according to --compression if if-different]:params:(if-different always)'\
 
-                 --chunker-params'[pecify the chunker parameters]:PARAMS'\
 
-                 $borg_common_options
 
-             ;;
 
-         (export-tar)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:tar:_files'\
 
-                 '4:path:_files'\
 
-                 --tar-filter'[filter program to pipe data through]'\
 
-                 --list'[output verbose list of items (files, dirs, ...)]'\
 
-                 {-e,--exclude}'[exclude paths matching PATTERN]:PATTERN'\
 
-                 --exclude-from'[read exclude patterns from EXCLUDEFILE, one per line]:_files'\
 
-                 --pattern'[experimental: include/exclude paths matching PATTERN]:PATTERN'\
 
-                 --patterns-from'[experimental: read include/exclude patterns from PATTERNFILE, one per line]:_files'\
 
-                 --strip-components'[Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped.]:NUMBER'\
 
-                 $borg_common_options
 
-             ;;
 
-         (serve)
 
-             _arguments \
 
-                 --restrict-to-path'[restrict repository access to PATH]:_files'\
 
-                 --restrict-to-repository'[restrict repository access]:_files'\
 
-                 --append-only'[only allow appending to repository segment files]'\
 
-                 --storage-quota'[Override storage quota of the repository]:QUOTA'\
 
-                 $borg_common_options
 
-             ;;
 
-         (config)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 '3:name:NAME'\
 
-                 '4:value:VALUE'\
 
-                 {-c,--cache}'[get and set values from the repo cache]'\
 
-                 {-d,--delete}'[delete the key from the config]'\
 
-                 --list'[list the configuration of the repo]'\
 
-                 $borg_common_options
 
-             ;;
 
-         (with-lock)
 
-             _arguments \
 
-                 '(-)2:archives:__borg_archive'\
 
-                 $borg_common_options
 
-                 #'3:command:_command_names -e'\
 
-                 #'4:arguments:_normal'
 
-                 #TODO Debug this, getting "_tags:comptags:36: nesting level too deep" error
 
-             ;;
 
-         (break-lock)
 
-             _arguments \
 
-                 '2:archives:__borg_archive'\
 
-                 $borg_common_options
 
-             ;;
 
-         (benchmark)
 
-             _arguments \
 
-                 '2:type:(crud)'\
 
-                 '3:repo:_files'\
 
-                 '4:path:_files'\
 
-                 $borg_common_options
 
-             ;;
 
-         (help)
 
-             _arguments \
 
-                 '2:type:(patterns placeholders compression )'\
 
-                 $borg_common_options
 
-             ;;
 
-         *)
 
-             commands=(
 
-                 'init:initialize empty repository'
 
-                 'create:create backup'
 
-                 'extract:extract archive contents'
 
-                 'check:verify repository'
 
-                 'rename:rename archive'
 
-                 'list:list archive or repository contents'
 
-                 'diff:find differences in archive contents'
 
-                 'delete:delete archive'
 
-                 'prune:prune archives'
 
-                 'compact:free repository space'
 
-                 'info:show repository or archive information'
 
-                 'mount:mount repository'
 
-                 'umount:umount repository'
 
-                 'key:manage repository key'
 
-                 'upgrade:upgrade repository format'
 
-                 'recreate:recreate contents of existing archives'
 
-                 'export-tar:create tarball from archive'
 
-                 'serve:start repository server process'
 
-                 'config:get/set options in repo/cache config'
 
-                 'with-lock:run user command with lock held'
 
-                 'break-lock:break repository and cache locks'
 
-                 'benchmark:benchmark command'
 
-                 'help:miscellaneous help'
 
-             )
 
-             _describe 'values' commands
 
-             _arguments $borg_common_options
 
-         ;;
 
-     esac
 
- }
 
- __borg_archive() {
 
-     __borg_list_archives 1
 
- }
 
- __borg_archive2() {
 
-     __borg_list_archives 2
 
- }
 
- __borg_list_archives() {
 
-     local -a items
 
-     local cpath
 
-     cpath=`expr match "${words}" "\(.*\)::"`
 
-     cpath=${cpath##* }
 
-     if (( $1 == 1 )); then
 
-         # To achieve "repository::archive" listing:
 
-         prefix_repo="${cpath}::"
 
-     fi
 
-     if (( $1 == 2 )); then
 
-         # To achieve only "archive" listing:
 
-         prefix_repo=
 
-     fi
 
-     items=("${(@f)$(borg list --format=$prefix_repo\{archive\}\{NEWLINE\} $cpath 2>/dev/null)}")
 
-     if [[ $items[1] == "" ]]; then
 
-         _files -/
 
-     else
 
-         _wanted archives expl 'archive' compadd $items
 
-     fi
 
- }
 
 
  |