add autocompletion for bw
bitwarden cli does not give autocompletion for bash, so add it. Source is https://github.com/bitwarden/cli/issues/307
This commit is contained in:
parent
74a9180dc6
commit
4dc5a84551
1 changed files with 284 additions and 0 deletions
284
bash_completion.d/bw
Normal file
284
bash_completion.d/bw
Normal file
|
@ -0,0 +1,284 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Return if not interactive
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
# Base options for bw
|
||||||
|
__BW_BASE_OPTS="
|
||||||
|
--pretty
|
||||||
|
--raw
|
||||||
|
--response
|
||||||
|
--quiet
|
||||||
|
--nointeraction
|
||||||
|
--session
|
||||||
|
-v --version
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Base commands for bw
|
||||||
|
__BW_BASE_COMMANDS="
|
||||||
|
login logout lock
|
||||||
|
unlock sync generate
|
||||||
|
encode config update
|
||||||
|
completion status list
|
||||||
|
get create edit
|
||||||
|
delete restore share
|
||||||
|
confirm import export
|
||||||
|
send receive help
|
||||||
|
"
|
||||||
|
# Generic help options for simple commands
|
||||||
|
__BW_HELP_OPTS="
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw login
|
||||||
|
__BW_LOGIN_OPTS="
|
||||||
|
--method
|
||||||
|
--code
|
||||||
|
--sso
|
||||||
|
--apikey
|
||||||
|
--passwordenv
|
||||||
|
--passwordfile
|
||||||
|
--check
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw unlock
|
||||||
|
__BW_UNLOCK_OPTS="
|
||||||
|
--raw
|
||||||
|
--check
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw sync
|
||||||
|
__BW_SYNC_OPTS="
|
||||||
|
-f --force
|
||||||
|
--last
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw generate
|
||||||
|
__BW_GENERATE_OPTS="
|
||||||
|
-u --uppercase
|
||||||
|
-l --lowercase
|
||||||
|
-n --number
|
||||||
|
-s --special
|
||||||
|
-p --passphrase
|
||||||
|
--length
|
||||||
|
--words
|
||||||
|
--separator
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw config
|
||||||
|
__BW_CONFIG_OPTS="
|
||||||
|
--web-vault
|
||||||
|
--api
|
||||||
|
--identity
|
||||||
|
--icons
|
||||||
|
--notifications
|
||||||
|
--events
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw config
|
||||||
|
__BW_CONFIG_OBJECTS="
|
||||||
|
server
|
||||||
|
"
|
||||||
|
# Options for bw update
|
||||||
|
__BW_UPDATE_OPTS="
|
||||||
|
--raw
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw list
|
||||||
|
__BW_LIST_OPTS="
|
||||||
|
--search
|
||||||
|
--url
|
||||||
|
--folderid
|
||||||
|
--collectionid
|
||||||
|
--organizationid
|
||||||
|
--trash
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw list
|
||||||
|
__BW_LIST_OBJECTS="
|
||||||
|
items folders collections
|
||||||
|
organizations org-collections
|
||||||
|
org-members
|
||||||
|
"
|
||||||
|
# Options for bw get
|
||||||
|
__BW_GET_OPTS="
|
||||||
|
--itemid
|
||||||
|
--output
|
||||||
|
--organizationid
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw get
|
||||||
|
__BW_GET_OBJECTS="
|
||||||
|
item username password
|
||||||
|
uri totp exposed
|
||||||
|
attachment folder collection
|
||||||
|
org-collection organization template
|
||||||
|
fingerprint send email
|
||||||
|
"
|
||||||
|
# Options for bw create
|
||||||
|
__BW_CREATE_OPTS="
|
||||||
|
--file
|
||||||
|
--itemid
|
||||||
|
--organizationid
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw create
|
||||||
|
__BW_CREATE_OBJECTS="
|
||||||
|
item attachment folder
|
||||||
|
org-collection
|
||||||
|
"
|
||||||
|
# Options for bw edit
|
||||||
|
__BW_EDIT_OPTS="
|
||||||
|
--organizationid
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw edit
|
||||||
|
__BW_EDIT_OBJECTS="
|
||||||
|
item item-collections
|
||||||
|
folder org-collection
|
||||||
|
"
|
||||||
|
# Options for bw delete
|
||||||
|
__BW_DELETE_OPTS="
|
||||||
|
--itemid
|
||||||
|
--organizationid
|
||||||
|
-p --permanent
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw delete
|
||||||
|
__BW_DELETE_OBJECTS="
|
||||||
|
item attachment folder
|
||||||
|
org-collection
|
||||||
|
"
|
||||||
|
# Objects for bw restore
|
||||||
|
__BW_RESTORE_OBJECTS="
|
||||||
|
item
|
||||||
|
"
|
||||||
|
# Options for bw confirm
|
||||||
|
__BW_CONFIRM_OPTS="
|
||||||
|
--organizationid
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw confirm
|
||||||
|
__BW_CONFIRM_OBJECTS="
|
||||||
|
org-member
|
||||||
|
"
|
||||||
|
# Options for bw import
|
||||||
|
__BW_IMPORT_OPTS="
|
||||||
|
--formats
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw export
|
||||||
|
__BW_EXPORT_OPTS="
|
||||||
|
--output
|
||||||
|
--format
|
||||||
|
--raw
|
||||||
|
--organizationid
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Options for bw send
|
||||||
|
__BW_SEND_OPTS="
|
||||||
|
-f --file
|
||||||
|
-d --deleteInDays
|
||||||
|
--hidden
|
||||||
|
-n --name
|
||||||
|
--notes
|
||||||
|
--fullObject
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
# Objects for bw send
|
||||||
|
__BW_SEND_OBJECTS="
|
||||||
|
list template get
|
||||||
|
receive create edit
|
||||||
|
remove-password delete
|
||||||
|
"
|
||||||
|
# Options for bw receive
|
||||||
|
__BW_RECEIVE_OPTS="
|
||||||
|
--password
|
||||||
|
--passwordenv
|
||||||
|
--passwordfile
|
||||||
|
--obj
|
||||||
|
--output
|
||||||
|
-h --help
|
||||||
|
"
|
||||||
|
|
||||||
|
__bw_generic_completion() {
|
||||||
|
local cur
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
|
||||||
|
if [[ "${COMP_WORDS[COMP_CWORD]}" =~ ^- ]]; then
|
||||||
|
COMPREPLY=($(compgen -W "$1" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
COMPREPLY=($(compgen -W "$2" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__bw_completion() {
|
||||||
|
local prev
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD - 1]}"
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
login)
|
||||||
|
__bw_generic_completion "$__BW_LOGIN_OPTS" ""
|
||||||
|
;;
|
||||||
|
logout | lock | encode | status | share)
|
||||||
|
__bw_generic_completion "$__BW_HELP_OPTS" ""
|
||||||
|
;;
|
||||||
|
unlock)
|
||||||
|
__bw_generic_completion "$__BW_UNLOCK_OPTS" ""
|
||||||
|
;;
|
||||||
|
sync)
|
||||||
|
__bw_generic_completion "$__BW_SYNC_OPTS" ""
|
||||||
|
;;
|
||||||
|
generate)
|
||||||
|
__bw_generic_completion "$__BW_GENERATE_OPTS" ""
|
||||||
|
;;
|
||||||
|
config)
|
||||||
|
__bw_generic_completion "$__BW_CONFIG_OPTS" "$__BW_CONFIG_OBJECTS"
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
__bw_generic_completion "$__BW_UPDATE_OPTS" ""
|
||||||
|
;;
|
||||||
|
list)
|
||||||
|
__bw_generic_completion "$__BW_LIST_OPTS" "$__BW_LIST_OBJECTS"
|
||||||
|
;;
|
||||||
|
get)
|
||||||
|
__bw_generic_completion "$__BW_GET_OPTS" "$__BW_GET_OBJECTS"
|
||||||
|
;;
|
||||||
|
create)
|
||||||
|
__bw_generic_completion "$__BW_CREATE_OPTS" "$__BW_CREATE_OBJECTS"
|
||||||
|
;;
|
||||||
|
edit)
|
||||||
|
__bw_generic_completion "$__BW_EDIT_OPTS" "$__BW_EDIT_OBJECTS"
|
||||||
|
;;
|
||||||
|
delete)
|
||||||
|
__bw_generic_completion "$__BW_DELETE_OPTS" "$__BW_DELETE_OBJECTS"
|
||||||
|
;;
|
||||||
|
restore)
|
||||||
|
__bw_generic_completion "$__BW_HELP_OPTS" "$__BW_RESTORE_OBJECTS"
|
||||||
|
;;
|
||||||
|
confirm)
|
||||||
|
__bw_generic_completion "$__BW_CONFIRM_OPTS" "$__BW_CONFIRM_OBJECTS"
|
||||||
|
;;
|
||||||
|
import)
|
||||||
|
__bw_generic_completion "$__BW_IMPORT_OPTS" ""
|
||||||
|
;;
|
||||||
|
export)
|
||||||
|
__bw_generic_completion "$__BW_EXPORT_OPTS" ""
|
||||||
|
;;
|
||||||
|
send)
|
||||||
|
__bw_generic_completion "$__BW_SEND_OPTS" "$__BW_SEND_OBJECTS"
|
||||||
|
;;
|
||||||
|
receive)
|
||||||
|
__bw_generic_completion "$__BW_RECEIVE_OPTS" ""
|
||||||
|
;;
|
||||||
|
bw)
|
||||||
|
__bw_generic_completion "$__BW_BASE_OPTS" "$__BW_BASE_COMMANDS"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
__bw_generic_completion ""
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
complete -o default -F __bw_completion bw
|
Loading…
Reference in a new issue