Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
ohmyzsh patches
From d31805edf444bf236eebafe06c0c1fb505ff50d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20A=2E=20Hult=C3=A9n?= <jonas@sldr.se>
Date: Sun, 1 Dec 2019 14:01:31 +0100
Subject: [PATCH] Added my own despicable theme
---
themes/sldr-booyah.zsh-theme | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 themes/sldr-booyah.zsh-theme
diff --git a/themes/sldr-booyah.zsh-theme b/themes/sldr-booyah.zsh-theme
new file mode 100644
index 00000000..fb71ee36
--- /dev/null
+++ b/themes/sldr-booyah.zsh-theme
@@ -0,0 +1,33 @@
+# ZSH Theme - Preview: https://gyazo.com/8becc8a7ed5ab54a0262a470555c3eed.png
+local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
+
+if [[ $UID -eq 0 ]]; then
+ local user_host='%{$terminfo[bold]$fg[red]%}%n@%m %{$reset_color%}'
+ local user_symbol='#'
+else
+ local user_host='%{$terminfo[bold]$fg[green]%}%n@%m %{$reset_color%}'
+ local user_symbol='$'
+fi
+
+local current_dir='%{$terminfo[bold]$fg[blue]%}%~ %{$reset_color%}'
+local git_branch='$(git_prompt_info)'
+local rvm_ruby='$(ruby_prompt_info)'
+local venv_prompt='$(virtualenv_prompt_info)'
+local timestamp='%{$fg_bold[white]%}%D{[%X]}%{$reset_color%} '
+
+ZSH_THEME_RVM_PROMPT_OPTIONS="i v g"
+
+PROMPT="╭─${user_host}${timestamp}${current_dir}${rvm_ruby}${git_branch}${venv_prompt}
+╰─%B${user_symbol}%b "
+RPROMPT="%B${return_code}%b"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹"
+ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}"
+
+ZSH_THEME_RUBY_PROMPT_PREFIX="%{$fg[red]%}‹"
+ZSH_THEME_RUBY_PROMPT_SUFFIX="› %{$reset_color%}"
+
+ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX="%{$fg[green]%}‹"
+ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX="› %{$reset_color%}"
+ZSH_THEME_VIRTUALENV_PREFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX
+ZSH_THEME_VIRTUALENV_SUFFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX
--
2.17.1
From 32ae3fcf35308b2b88233bab670fc2dc0727bc2e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20A=2E=20Hult=C3=A9n?= <jonas@sldr.se>
Date: Wed, 15 Apr 2020 21:47:03 +0200
Subject: [PATCH] Added borg completion the wrong way
---
plugins/borg/README.md | 13 ++
plugins/borg/_borg | 449 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 462 insertions(+)
create mode 100644 plugins/borg/README.md
create mode 100644 plugins/borg/_borg
diff --git a/plugins/borg/README.md b/plugins/borg/README.md
new file mode 100644
index 00000000..c3c61ffa
--- /dev/null
+++ b/plugins/borg/README.md
@@ -0,0 +1,13 @@
+# borg
+
+This plugin provides completion support for [borg](https://www.borgbackup.org/).
+
+To use it, add `borg` to the plugins array in your zshrc file.
+
+```zsh
+plugins=(... borg)
+```
+
+Then, borg commands should tab-complete.
+
+Developed for borg 1.1.11; older versions may not match.
diff --git a/plugins/borg/_borg b/plugins/borg/_borg
new file mode 100644
index 00000000..9f5e33ad
--- /dev/null
+++ b/plugins/borg/_borg
@@ -0,0 +1,449 @@
+#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]'\
+ --noflags'[do not read and store flags (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)]'\
+ --noflags'[do not extract/set flags (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
+}
+
--
2.17.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.