diff --git a/README.md b/README.md index 67f341f..cb7b812 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ sudo usermod -s /bin/zsh simono41 curl -sS https://starship.rs/install.sh | sh -dnf install jetbrains-mono-fonts tmux perl-Time-HiRes +dnf install jetbrains-mono-fonts tmux perl-Time-HiRes rbw sh -c "$(curl -fsLS get.chezmoi.io)" chezmoi init -v --apply --force https://code.brothertec.eu/simono41/dotfiles.git diff --git a/README_darwin.md b/README_darwin.md index 7d1dee1..7a29acf 100644 --- a/README_darwin.md +++ b/README_darwin.md @@ -28,6 +28,7 @@ brew install htop brew install btop brew install asciiquarium brew install lolcat +brew install rbw brew install openjdk@17 sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk brew install openjdk@21 diff --git a/dot_config/fuzzel/executable_fuzzel-rbw.sh b/dot_config/fuzzel/executable_fuzzel-rbw.sh new file mode 100644 index 0000000..4fa3607 --- /dev/null +++ b/dot_config/fuzzel/executable_fuzzel-rbw.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# Use fuzzel to find a password from password-store and copy it to clipboard. +# inpired by: https://gist.github.com/igemnace/2b8609d280752e8a1b173204c14f6892 + +pass_name=$(rbw list | fuzzel -d) + +[[ $pass_name != "" ]] && rbw get "$pass_name" | wl-copy diff --git a/dot_zsh/completion/_rbw b/dot_zsh/completion/_rbw new file mode 100644 index 0000000..caa31e9 --- /dev/null +++ b/dot_zsh/completion/_rbw @@ -0,0 +1,753 @@ +#compdef rbw + +autoload -U is-at-least + +_rbw() { + typeset -A opt_args + typeset -a _arguments_options + local ret=1 + + if is-at-least 5.2; then + _arguments_options=(-s -S -C) + else + _arguments_options=(-s -C) + fi + + local context curcontext="$curcontext" state line + _arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +'-V[Print version]' \ +'--version[Print version]' \ +":: :_rbw_commands" \ +"*::: :->rbw" \ +&& ret=0 + case $state in + (rbw) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:rbw-command-$line[1]:" + case $line[1] in + (config) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +":: :_rbw__config_commands" \ +"*::: :->config" \ +&& ret=0 + + case $state in + (config) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:rbw-config-command-$line[1]:" + case $line[1] in + (show) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(set) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +':key -- Configuration key to set:' \ +':value -- Value to set the configuration option to:' \ +&& ret=0 +;; +(unset) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +':key -- Configuration key to unset:' \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +":: :_rbw__config__help_commands" \ +"*::: :->help" \ +&& ret=0 + + case $state in + (help) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:rbw-config-help-command-$line[1]:" + case $line[1] in + (show) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(set) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(unset) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; + esac + ;; +esac +;; + esac + ;; +esac +;; +(register) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +&& ret=0 +;; +(login) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(unlock) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(unlocked) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(sync) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(list) +_arguments "${_arguments_options[@]}" : \ +'*--fields=[Fields to display. Available options are id, name, user, folder. Multiple fields will be separated by tabs.]:FIELDS: ' \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(ls) +_arguments "${_arguments_options[@]}" : \ +'*--fields=[Fields to display. Available options are id, name, user, folder. Multiple fields will be separated by tabs.]:FIELDS: ' \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(get) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-f+[Field to get]:FIELD: ' \ +'--field=[Field to get]:FIELD: ' \ +'--full[Display the notes in addition to the password]' \ +'--raw[Display output as JSON]' \ +'--clipboard[Copy result to clipboard]' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':needle -- Name, URI or UUID of the entry to display:' \ +'::user -- Username of the entry to display:' \ +&& ret=0 +;; +(search) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-h[Print help]' \ +'--help[Print help]' \ +':term -- Search term to locate entries:' \ +&& ret=0 +;; +(code) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'--clipboard[Copy result to clipboard]' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':needle -- Name, URI or UUID of the entry to display:' \ +'::user -- Username of the entry to display:' \ +&& ret=0 +;; +(totp) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'--clipboard[Copy result to clipboard]' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':needle -- Name, URI or UUID of the entry to display:' \ +'::user -- Username of the entry to display:' \ +&& ret=0 +;; +(add) +_arguments "${_arguments_options[@]}" : \ +'*--uri=[URI for the password entry]:URI: ' \ +'--folder=[Folder for the password entry]:FOLDER: ' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +':name -- Name of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(generate) +_arguments "${_arguments_options[@]}" : \ +'*--uri=[URI for the password entry]:URI: ' \ +'--folder=[Folder for the password entry]:FOLDER: ' \ +'--no-symbols[Generate a password with no special characters]' \ +'--only-numbers[Generate a password consisting of only numbers]' \ +'--nonconfusables[Generate a password without visually similar characters (useful for passwords intended to be written down)]' \ +'--diceware[Generate a password of multiple dictionary words chosen from the EFF word list. The len parameter for this option will set the number of words to generate, rather than characters.]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +':len -- Length of the password to generate:' \ +'::name -- Name of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(gen) +_arguments "${_arguments_options[@]}" : \ +'*--uri=[URI for the password entry]:URI: ' \ +'--folder=[Folder for the password entry]:FOLDER: ' \ +'--no-symbols[Generate a password with no special characters]' \ +'--only-numbers[Generate a password consisting of only numbers]' \ +'--nonconfusables[Generate a password without visually similar characters (useful for passwords intended to be written down)]' \ +'--diceware[Generate a password of multiple dictionary words chosen from the EFF word list. The len parameter for this option will set the number of words to generate, rather than characters.]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +':len -- Length of the password to generate:' \ +'::name -- Name of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(edit) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +':name -- Name or UUID of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(remove) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':name -- Name or UUID of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(rm) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':name -- Name or UUID of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(history) +_arguments "${_arguments_options[@]}" : \ +'--folder=[Folder name to search in]:FOLDER: ' \ +'-i[Ignore case]' \ +'--ignorecase[Ignore case]' \ +'-h[Print help]' \ +'--help[Print help]' \ +':name -- Name or UUID of the password entry:' \ +'::user -- Username for the password entry:' \ +&& ret=0 +;; +(lock) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(purge) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(stop-agent) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +&& ret=0 +;; +(gen-completions) +_arguments "${_arguments_options[@]}" : \ +'-h[Print help]' \ +'--help[Print help]' \ +':shell:(bash elvish fish powershell zsh)' \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +":: :_rbw__help_commands" \ +"*::: :->help" \ +&& ret=0 + + case $state in + (help) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:rbw-help-command-$line[1]:" + case $line[1] in + (config) +_arguments "${_arguments_options[@]}" : \ +":: :_rbw__help__config_commands" \ +"*::: :->config" \ +&& ret=0 + + case $state in + (config) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:rbw-help-config-command-$line[1]:" + case $line[1] in + (show) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(set) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(unset) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; + esac + ;; +esac +;; +(register) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(login) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(unlock) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(unlocked) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(sync) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(list) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(get) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(search) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(code) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(add) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(generate) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(edit) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(remove) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(history) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(lock) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(purge) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(stop-agent) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(gen-completions) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; + esac + ;; +esac +;; + esac + ;; +esac +} + +(( $+functions[_rbw_commands] )) || +_rbw_commands() { + local commands; commands=( +'config:Get or set configuration options' \ +'register:Register this device with the Bitwarden server' \ +'login:Log in to the Bitwarden server' \ +'unlock:Unlock the local Bitwarden database' \ +'unlocked:Check if the local Bitwarden database is unlocked' \ +'sync:Update the local copy of the Bitwarden database' \ +'list:List all entries in the local Bitwarden database' \ +'ls:List all entries in the local Bitwarden database' \ +'get:Display the password for a given entry' \ +'search:Search for entries' \ +'code:Display the authenticator code for a given entry' \ +'totp:Display the authenticator code for a given entry' \ +'add:Add a new password to the database' \ +'generate:Generate a new password' \ +'gen:Generate a new password' \ +'edit:Modify an existing password' \ +'remove:Remove a given entry' \ +'rm:Remove a given entry' \ +'history:View the password history for a given entry' \ +'lock:Lock the password database' \ +'purge:Remove the local copy of the password database' \ +'stop-agent:Terminate the background agent' \ +'gen-completions:Generate completion script for the given shell' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'rbw commands' commands "$@" +} +(( $+functions[_rbw__add_commands] )) || +_rbw__add_commands() { + local commands; commands=() + _describe -t commands 'rbw add commands' commands "$@" +} +(( $+functions[_rbw__code_commands] )) || +_rbw__code_commands() { + local commands; commands=() + _describe -t commands 'rbw code commands' commands "$@" +} +(( $+functions[_rbw__config_commands] )) || +_rbw__config_commands() { + local commands; commands=( +'show:Show the values of all configuration settings' \ +'set:Set a configuration option' \ +'unset:Reset a configuration option to its default' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'rbw config commands' commands "$@" +} +(( $+functions[_rbw__config__help_commands] )) || +_rbw__config__help_commands() { + local commands; commands=( +'show:Show the values of all configuration settings' \ +'set:Set a configuration option' \ +'unset:Reset a configuration option to its default' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'rbw config help commands' commands "$@" +} +(( $+functions[_rbw__config__help__help_commands] )) || +_rbw__config__help__help_commands() { + local commands; commands=() + _describe -t commands 'rbw config help help commands' commands "$@" +} +(( $+functions[_rbw__config__help__set_commands] )) || +_rbw__config__help__set_commands() { + local commands; commands=() + _describe -t commands 'rbw config help set commands' commands "$@" +} +(( $+functions[_rbw__config__help__show_commands] )) || +_rbw__config__help__show_commands() { + local commands; commands=() + _describe -t commands 'rbw config help show commands' commands "$@" +} +(( $+functions[_rbw__config__help__unset_commands] )) || +_rbw__config__help__unset_commands() { + local commands; commands=() + _describe -t commands 'rbw config help unset commands' commands "$@" +} +(( $+functions[_rbw__config__set_commands] )) || +_rbw__config__set_commands() { + local commands; commands=() + _describe -t commands 'rbw config set commands' commands "$@" +} +(( $+functions[_rbw__config__show_commands] )) || +_rbw__config__show_commands() { + local commands; commands=() + _describe -t commands 'rbw config show commands' commands "$@" +} +(( $+functions[_rbw__config__unset_commands] )) || +_rbw__config__unset_commands() { + local commands; commands=() + _describe -t commands 'rbw config unset commands' commands "$@" +} +(( $+functions[_rbw__edit_commands] )) || +_rbw__edit_commands() { + local commands; commands=() + _describe -t commands 'rbw edit commands' commands "$@" +} +(( $+functions[_rbw__gen-completions_commands] )) || +_rbw__gen-completions_commands() { + local commands; commands=() + _describe -t commands 'rbw gen-completions commands' commands "$@" +} +(( $+functions[_rbw__generate_commands] )) || +_rbw__generate_commands() { + local commands; commands=() + _describe -t commands 'rbw generate commands' commands "$@" +} +(( $+functions[_rbw__get_commands] )) || +_rbw__get_commands() { + local commands; commands=() + _describe -t commands 'rbw get commands' commands "$@" +} +(( $+functions[_rbw__help_commands] )) || +_rbw__help_commands() { + local commands; commands=( +'config:Get or set configuration options' \ +'register:Register this device with the Bitwarden server' \ +'login:Log in to the Bitwarden server' \ +'unlock:Unlock the local Bitwarden database' \ +'unlocked:Check if the local Bitwarden database is unlocked' \ +'sync:Update the local copy of the Bitwarden database' \ +'list:List all entries in the local Bitwarden database' \ +'get:Display the password for a given entry' \ +'search:Search for entries' \ +'code:Display the authenticator code for a given entry' \ +'add:Add a new password to the database' \ +'generate:Generate a new password' \ +'edit:Modify an existing password' \ +'remove:Remove a given entry' \ +'history:View the password history for a given entry' \ +'lock:Lock the password database' \ +'purge:Remove the local copy of the password database' \ +'stop-agent:Terminate the background agent' \ +'gen-completions:Generate completion script for the given shell' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'rbw help commands' commands "$@" +} +(( $+functions[_rbw__help__add_commands] )) || +_rbw__help__add_commands() { + local commands; commands=() + _describe -t commands 'rbw help add commands' commands "$@" +} +(( $+functions[_rbw__help__code_commands] )) || +_rbw__help__code_commands() { + local commands; commands=() + _describe -t commands 'rbw help code commands' commands "$@" +} +(( $+functions[_rbw__help__config_commands] )) || +_rbw__help__config_commands() { + local commands; commands=( +'show:Show the values of all configuration settings' \ +'set:Set a configuration option' \ +'unset:Reset a configuration option to its default' \ + ) + _describe -t commands 'rbw help config commands' commands "$@" +} +(( $+functions[_rbw__help__config__set_commands] )) || +_rbw__help__config__set_commands() { + local commands; commands=() + _describe -t commands 'rbw help config set commands' commands "$@" +} +(( $+functions[_rbw__help__config__show_commands] )) || +_rbw__help__config__show_commands() { + local commands; commands=() + _describe -t commands 'rbw help config show commands' commands "$@" +} +(( $+functions[_rbw__help__config__unset_commands] )) || +_rbw__help__config__unset_commands() { + local commands; commands=() + _describe -t commands 'rbw help config unset commands' commands "$@" +} +(( $+functions[_rbw__help__edit_commands] )) || +_rbw__help__edit_commands() { + local commands; commands=() + _describe -t commands 'rbw help edit commands' commands "$@" +} +(( $+functions[_rbw__help__gen-completions_commands] )) || +_rbw__help__gen-completions_commands() { + local commands; commands=() + _describe -t commands 'rbw help gen-completions commands' commands "$@" +} +(( $+functions[_rbw__help__generate_commands] )) || +_rbw__help__generate_commands() { + local commands; commands=() + _describe -t commands 'rbw help generate commands' commands "$@" +} +(( $+functions[_rbw__help__get_commands] )) || +_rbw__help__get_commands() { + local commands; commands=() + _describe -t commands 'rbw help get commands' commands "$@" +} +(( $+functions[_rbw__help__help_commands] )) || +_rbw__help__help_commands() { + local commands; commands=() + _describe -t commands 'rbw help help commands' commands "$@" +} +(( $+functions[_rbw__help__history_commands] )) || +_rbw__help__history_commands() { + local commands; commands=() + _describe -t commands 'rbw help history commands' commands "$@" +} +(( $+functions[_rbw__help__list_commands] )) || +_rbw__help__list_commands() { + local commands; commands=() + _describe -t commands 'rbw help list commands' commands "$@" +} +(( $+functions[_rbw__help__lock_commands] )) || +_rbw__help__lock_commands() { + local commands; commands=() + _describe -t commands 'rbw help lock commands' commands "$@" +} +(( $+functions[_rbw__help__login_commands] )) || +_rbw__help__login_commands() { + local commands; commands=() + _describe -t commands 'rbw help login commands' commands "$@" +} +(( $+functions[_rbw__help__purge_commands] )) || +_rbw__help__purge_commands() { + local commands; commands=() + _describe -t commands 'rbw help purge commands' commands "$@" +} +(( $+functions[_rbw__help__register_commands] )) || +_rbw__help__register_commands() { + local commands; commands=() + _describe -t commands 'rbw help register commands' commands "$@" +} +(( $+functions[_rbw__help__remove_commands] )) || +_rbw__help__remove_commands() { + local commands; commands=() + _describe -t commands 'rbw help remove commands' commands "$@" +} +(( $+functions[_rbw__help__search_commands] )) || +_rbw__help__search_commands() { + local commands; commands=() + _describe -t commands 'rbw help search commands' commands "$@" +} +(( $+functions[_rbw__help__stop-agent_commands] )) || +_rbw__help__stop-agent_commands() { + local commands; commands=() + _describe -t commands 'rbw help stop-agent commands' commands "$@" +} +(( $+functions[_rbw__help__sync_commands] )) || +_rbw__help__sync_commands() { + local commands; commands=() + _describe -t commands 'rbw help sync commands' commands "$@" +} +(( $+functions[_rbw__help__unlock_commands] )) || +_rbw__help__unlock_commands() { + local commands; commands=() + _describe -t commands 'rbw help unlock commands' commands "$@" +} +(( $+functions[_rbw__help__unlocked_commands] )) || +_rbw__help__unlocked_commands() { + local commands; commands=() + _describe -t commands 'rbw help unlocked commands' commands "$@" +} +(( $+functions[_rbw__history_commands] )) || +_rbw__history_commands() { + local commands; commands=() + _describe -t commands 'rbw history commands' commands "$@" +} +(( $+functions[_rbw__list_commands] )) || +_rbw__list_commands() { + local commands; commands=() + _describe -t commands 'rbw list commands' commands "$@" +} +(( $+functions[_rbw__lock_commands] )) || +_rbw__lock_commands() { + local commands; commands=() + _describe -t commands 'rbw lock commands' commands "$@" +} +(( $+functions[_rbw__login_commands] )) || +_rbw__login_commands() { + local commands; commands=() + _describe -t commands 'rbw login commands' commands "$@" +} +(( $+functions[_rbw__purge_commands] )) || +_rbw__purge_commands() { + local commands; commands=() + _describe -t commands 'rbw purge commands' commands "$@" +} +(( $+functions[_rbw__register_commands] )) || +_rbw__register_commands() { + local commands; commands=() + _describe -t commands 'rbw register commands' commands "$@" +} +(( $+functions[_rbw__remove_commands] )) || +_rbw__remove_commands() { + local commands; commands=() + _describe -t commands 'rbw remove commands' commands "$@" +} +(( $+functions[_rbw__search_commands] )) || +_rbw__search_commands() { + local commands; commands=() + _describe -t commands 'rbw search commands' commands "$@" +} +(( $+functions[_rbw__stop-agent_commands] )) || +_rbw__stop-agent_commands() { + local commands; commands=() + _describe -t commands 'rbw stop-agent commands' commands "$@" +} +(( $+functions[_rbw__sync_commands] )) || +_rbw__sync_commands() { + local commands; commands=() + _describe -t commands 'rbw sync commands' commands "$@" +} +(( $+functions[_rbw__unlock_commands] )) || +_rbw__unlock_commands() { + local commands; commands=() + _describe -t commands 'rbw unlock commands' commands "$@" +} +(( $+functions[_rbw__unlocked_commands] )) || +_rbw__unlocked_commands() { + local commands; commands=() + _describe -t commands 'rbw unlocked commands' commands "$@" +} + +if [ "$funcstack[1]" = "_rbw" ]; then + _rbw "$@" +else + compdef _rbw rbw +fi