When help command is issued, extensions installed are listed and, if
they support it, help from them is displayed; if they don't, a message
stating that there's no help available for them is displayed.
---
 src/password-store.sh | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index bad8d4f..2a9cad6 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -142,6 +142,18 @@ check_sneaky_paths() {
        done
 }
 
+in_array() {
+       local seeking="$1"; shift
+       local in=1
+       for element; do
+               if [[ "$element" == "$seeking" ]]; then
+                       in=0
+                       break
+               fi
+       done
+       return $in
+}
+
 #
 # END helper functions
 #
@@ -293,8 +305,38 @@ cmd_usage() {
            $PROGRAM version
                Show version information.
 
-       More information may be found in the pass(1) man page.
        _EOF
+       
+       if [[ (-n "$SYSTEM_EXTENSION_DIR" && -n "$(ls 
"$SYSTEM_EXTENSION_DIR"/*.bash 2>/dev/null)" ) || 
($PASSWORD_STORE_ENABLE_EXTENSIONS == true && -n "$(ls "$EXTENSIONS"/*.bash 
2>/dev/null)") ]]; then
+               echo "From extensions:"
+               local -a extdirs=( "$EXTENSIONS" "$SYSTEM_EXTENSION_DIR" )
+               local extdir ext extname exthelp extensions_called=()
+               for extdir in "${extdirs[@]}"; do
+                       for ext in "$extdir"/*.bash; do
+                               if [[ -r "$ext" && -x "$ext" ]]; then
+                                       extname="$(basename "$ext")"
+                                       # If extension was called from one dir, 
do not call it again
+                                       in_array "$extname" 
"${extensions_called[@]}" && continue
+                                       
+                                       echo "    $PROGRAM ${extname%.*}"
+                                       # Extract help function, that must be 
called as help_extensionname()
+                                       exthelp="$(sed -nE 
"/^(function)?\s?help_${extname%.*}\(\)/,/^}/p" "$ext")"
+                                       if [[ -z "$exthelp" ]]; then
+                                               # Function inexistent
+                                               echo "        (no help 
available)"
+                                       else
+                                               # Call it
+                                               eval "${exthelp}; 
help_${extname%.*}"
+                                       fi
+                                       extensions_called+=("$extname")
+                               fi
+                       done
+               done
+               [[ ${#extensions_called[@]} -eq 0 ]] && echo "    (no 
extensions enabled)"
+               echo
+       fi
+       
+       echo "More information may be found in the ${PROGRAM}(1) man page."
 }
 
 cmd_init() {
-- 
2.11.0

_______________________________________________
Password-Store mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/password-store

Reply via email to