Completion files of extensions not working properly?
t.fitschen at indiscale.com
t.fitschen at indiscale.com
Fri Dec 2 10:04:12 UTC 2022
Hi,
this issue is bothering me as well. Also, there are bug reports in
several pass extension projects, see
* https://github.com/tadfisher/pass-otp/issues/137
* https://github.com/roddhjav/pass-update/issues/25
to name just two. I figure they have no chance of fixing it in their
code base.
Regards
Timm
On Thu, Dec 01, 2022 at 07:19:38PM +0000, Simon Blum wrote:
> Hello,
>
> I'm new here, so let me know if there already is an ongoing discussion on
> this topic or if I get anything wrong about this.
>
> I noticed that some extensions for pass (like pass-update or pass-tomb)
> provide completion files, which are poorly integrated in pass. This is due
> to the fact, that completion files are loaded dynamically on demand. For
> example in bash the file $BASHCOMPDIR/pass is loaded when you enter "pass
> <TAB>". As the completion file for pass-update is stored in
> $BASHCOMPDIR/pass-update it is not loaded unless you type "pass-update
> <TAB>". The completion files in fish and zsh are handled in a similar
> manner.
>
> I'd like to suggest a fix for that issue. The completion files of pass may
> automatically seek completion files of extensions and source them. Enclosed
> you find a patch that provides that feature together with example completion
> files for the extension pass-file.
>
> Regards,
> Simon Blum
>
> # completion file for bash
>
> PASSWORD_STORE_EXTENSION_COMMANDS+=("file")
>
> __password_store_extension_complete_file() {
> local cur="${COMP_WORDS[COMP_CWORD]}"
> case "$COMP_CWORD" in
> 2)
> COMPREPLY+=($(compgen -W "add get" -- ${cur}))
> ;;
> 3)
> case "${COMP_WORDS[2]}" in
> a|add)
> COMPREPLY+=($(compgen -f ${cur}))
> ;;
> g|get)
> _pass_complete_entries 1
> ;;
> esac
> ;;
> 4)
> case "${COMP_WORDS[2]}" in
> a|add)
> _pass_complete_entries
> ;;
> esac
> ;;
> esac
> }
> #autoload
>
> PASSWORD_STORE_EXTENSION_COMMANDS+=("file:add/get file to/from password-store")
>
> __password_store_extension_complete_file () {
> case "$CURRENT" in
> 2)
> local -a subcommands
> subcommands=(
> "add:add file to password-store"
> "get:get file from password-store"
> )
> _describe -t commands 'pass' subcommands
> ;;
> 3)
> local cmd=${words[2]}
> case "${cmd}" in
> a|add)
> _files
> ;;
> g|get)
> _pass_complete_entries
> ;;
> esac
> ;;
> 4)
> local cmd=${words[2]}
> case "${cmd}" in
> a|add)
> _pass_complete_entries
> ;;
> esac
> ;;
> esac
> }
>
> unfunction $(basename $(print -P %x))
> set -l PROG 'pass'
>
> function __fish_pass-file_needs_command
> set -l cmd (commandline -opc)
> if [ (count $cmd) -eq 2 -a "$cmd[2]" = file ]
> return 0
> end
> return 1
> end
>
> function __fish_pass-file_arg_nr_of_command
> set -l cmd (commandline -opc)
> set -l expected_length (math 2 + $argv[1])
> if [ (count $cmd) -eq $expected_length -a "$cmd[2]" = "file" -a "$cmd[3]" = $argv[2] ]
> return 0
> end
> return 1
> end
>
> complete -c $PROG -f -n '__fish_pass_needs_command' -a file -d 'Command: add/get file to/from password-store'
>
> complete -c $PROG -f -n '__fish_pass-file_needs_command' -a add -d 'add file to password-store'
> complete -c $PROG -n '__fish_pass-file_arg_nr_of_command 1 a'
> complete -c $PROG -n '__fish_pass-file_arg_nr_of_command 1 add'
> complete -c $PROG -f -n '__fish_pass-file_arg_nr_of_command 2 a' -a "(__fish_pass_print_entries)"
> complete -c $PROG -f -n '__fish_pass-file_arg_nr_of_command 2 add' -a "(__fish_pass_print_entries)"
>
> complete -c $PROG -f -n '__fish_pass-file_needs_command' -a get -d 'get file from password-store'
> complete -c $PROG -f -n '__fish_pass-file_arg_nr_of_command 1 g' -a "(__fish_pass_print_entries)"
> complete -c $PROG -f -n '__fish_pass-file_arg_nr_of_command 1 get' -a "(__fish_pass_print_entries)"
>
--
Herr/Mr Timm Fitschen
(er/he)
Development
T: +49 551 288 76 48-3
E: t.fitschen at indiscale.com
I: indiscale.com
IndiScale - Wir machen individuelles Datenmanagement skalierbar.
IndiScale GmbH
Lotzestraße 22a
37083 Göttingen
Amtsgericht Göttingen • HRB 205721
Geschäftsführung Henrik tom Wörden
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 906 bytes
Desc: not available
URL: <http://lists.zx2c4.com/pipermail/password-store/attachments/20221202/0acc0bf6/attachment.sig>
More information about the Password-Store
mailing list