From 59a96007d3e416678efeeb4aeb465f9d38c410c3 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Sun, 14 Jan 2024 00:35:37 +0100 Subject: Enforce signature for extensions --- completion/crypt.bash | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ completion/crypt.zsh | 13 +++++++++++++ crypt.sh | 4 ++-- extra/crypt.bash | 53 --------------------------------------------------- extra/crypt.zsh | 13 ------------- 5 files changed, 68 insertions(+), 68 deletions(-) create mode 100755 completion/crypt.bash create mode 100755 completion/crypt.zsh delete mode 100755 extra/crypt.bash delete mode 100755 extra/crypt.zsh diff --git a/completion/crypt.bash b/completion/crypt.bash new file mode 100755 index 0000000..3074ff5 --- /dev/null +++ b/completion/crypt.bash @@ -0,0 +1,53 @@ +# Bash completion +# +# Copy to /usr/share/bash-completion/completions/crypt + +_crypt() { + COMPREPLY=() + + local location="${CRYPT_PATH:-$HOME/.crypt}" + location="${location%/}/" + local cur="${COMP_WORDS[COMP_CWORD]}" + + local IFS=$'\n' + local suffix=".gpg" + + local firstitem="" + local i=0 item + local items=($(compgen -f $location$cur)) + + for item in ${items[@]}; do + [[ $item =~ /\.[^/]*$ ]] && continue + + if [[ ${#items[@]} -eq 1 ]]; then + while [[ -d $item ]]; do + local subitems=($(compgen -f "$item/")) + local filtereditems=( ) item2 + for item2 in "${subitems[@]}"; do + [[ $item2 =~ /\.[^/]*$ ]] && continue + filtereditems+=( "$item2" ) + done + if [[ ${#filtereditems[@]} -eq 1 ]]; then + item="${filtereditems[0]}" + else + break + fi + done + fi + + [[ -d $item ]] && item="$item/" + + item="${item%$suffix}" + COMPREPLY+=("${item#$location}") + if [[ $i -eq 0 ]]; then + firstitem=$item + fi + let i+=1 + done + + if [[ $i -gt 1 || ( $i -eq 1 && -d $firstitem ) ]]; then + compopt -o nospace + fi +} + +complete -o filenames -F _crypt crypt diff --git a/completion/crypt.zsh b/completion/crypt.zsh new file mode 100755 index 0000000..3055baf --- /dev/null +++ b/completion/crypt.zsh @@ -0,0 +1,13 @@ +#compdef crypt +#autoload + +# copy to /usr/share/zsh/site-functions/_crypt + +_crypt() { + local IFS=$'\n' + local location + zstyle -s ":completion:${curcontext}:" location location || location="${CRYPT_PATH:-$HOME/.crypt}" + _values -C 'entries' ${$(crypt list --plain 2>/dev/null | sed -e "s#\([^[:space:]]*\)[[:space:]]*\(.*\)#\1\[\2\]#g" | sort):-""} +} + +_crypt diff --git a/crypt.sh b/crypt.sh index 7ae7bc4..3182fc9 100755 --- a/crypt.sh +++ b/crypt.sh @@ -272,8 +272,8 @@ load_extensions() { [[ -d "$CRYPT_PATH/.extensions" && $CLOSED -eq 0 ]] || return for f in $CRYPT_PATH/.extensions/*.bash; do - [[ -f "$f.sig" && -n "$CRYPT_SIGNING_KEY" ]] && gpg_verify "$f" - source "$f" + [[ -n "$CRYPT_SIGNING_KEY" ]] && gpg_verify "$f" + source "$f" "$f" done } diff --git a/extra/crypt.bash b/extra/crypt.bash deleted file mode 100755 index 3074ff5..0000000 --- a/extra/crypt.bash +++ /dev/null @@ -1,53 +0,0 @@ -# Bash completion -# -# Copy to /usr/share/bash-completion/completions/crypt - -_crypt() { - COMPREPLY=() - - local location="${CRYPT_PATH:-$HOME/.crypt}" - location="${location%/}/" - local cur="${COMP_WORDS[COMP_CWORD]}" - - local IFS=$'\n' - local suffix=".gpg" - - local firstitem="" - local i=0 item - local items=($(compgen -f $location$cur)) - - for item in ${items[@]}; do - [[ $item =~ /\.[^/]*$ ]] && continue - - if [[ ${#items[@]} -eq 1 ]]; then - while [[ -d $item ]]; do - local subitems=($(compgen -f "$item/")) - local filtereditems=( ) item2 - for item2 in "${subitems[@]}"; do - [[ $item2 =~ /\.[^/]*$ ]] && continue - filtereditems+=( "$item2" ) - done - if [[ ${#filtereditems[@]} -eq 1 ]]; then - item="${filtereditems[0]}" - else - break - fi - done - fi - - [[ -d $item ]] && item="$item/" - - item="${item%$suffix}" - COMPREPLY+=("${item#$location}") - if [[ $i -eq 0 ]]; then - firstitem=$item - fi - let i+=1 - done - - if [[ $i -gt 1 || ( $i -eq 1 && -d $firstitem ) ]]; then - compopt -o nospace - fi -} - -complete -o filenames -F _crypt crypt diff --git a/extra/crypt.zsh b/extra/crypt.zsh deleted file mode 100755 index 3055baf..0000000 --- a/extra/crypt.zsh +++ /dev/null @@ -1,13 +0,0 @@ -#compdef crypt -#autoload - -# copy to /usr/share/zsh/site-functions/_crypt - -_crypt() { - local IFS=$'\n' - local location - zstyle -s ":completion:${curcontext}:" location location || location="${CRYPT_PATH:-$HOME/.crypt}" - _values -C 'entries' ${$(crypt list --plain 2>/dev/null | sed -e "s#\([^[:space:]]*\)[[:space:]]*\(.*\)#\1\[\2\]#g" | sort):-""} -} - -_crypt -- cgit v1.2.3