From: Alexander Barton Date: Wed, 17 Jan 2024 10:38:13 +0000 (+0100) Subject: axzshctl: Implement new "plugin-help" subcommand X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e9973ba3ee1c22f3c584bccb9abb317fbed5f35;p=ax-zsh.git axzshctl: Implement new "plugin-help" subcommand --- diff --git a/bin/axzshctl b/bin/axzshctl index dea26d8..943e464 100755 --- a/bin/axzshctl +++ b/bin/axzshctl @@ -58,6 +58,8 @@ function Usage { echo " Disable plugin(s)." echo " list-enabled" echo " List enabled plugins." + echo " plugin-help" + echo " Show help text for a plugin (when provided by the plugin)." echo echo " reset-plugins" echo " Reset active plugins to the default set." @@ -250,6 +252,35 @@ function ListEnabledPlugins { return 0 } +function PluginHelp { + local plugin=$(NormalizedPluginName "$1") + local repo_plugin=$(echo "$plugin" | sed -e 's|#|/plugins/|') + local plugin_found= + + for plugin_d ( + "$plugin:A" + "$AXZSH/active_plugins/$plugin" + "$AXZSH/active_plugins/$repo_plugin" + "$AXZSH_PLUGIN_D/$plugin" + "$ZSH_CUSTOM/$plugin" + "$AXZSH/custom_plugins/$plugin" + "$AXZSH/repos/$plugin" + "$AXZSH/repos/$repo_plugin" + "$AXZSH/plugins/$plugin" + "$AXZSH/default_plugins/$plugin" + "$AXZSH/core/$plugin" + ); do + [[ -e "$plugin_d" ]] && plugin_found=1 + [[ -r "$plugin_d/README.md" ]] || continue + less "$plugin_d/README.md" + return 0 + done + [[ -n "$plugin_found" ]] \ + && echo "Plugin \"$1\" found, but no help available!" >&2 \ + || echo "Plugin \"$1\" not found!" >&2 + return 1 +} + function ResetPlugins { local dir="$AXZSH/active_plugins" local r1=0, r2=0 @@ -495,6 +526,10 @@ case "$cmd" in [[ $# -eq 0 ]] || Usage ListEnabledPlugins ;; + "plugin-help") + [[ $# -eq 1 ]] || Usage + PluginHelp "$1" + ;; "reset-plugins") [[ $# -eq 0 ]] || Usage ResetPlugins diff --git a/core/40_axzsh/functions/_axzsh b/core/40_axzsh/functions/_axzsh index ed3eab7..a403579 100644 --- a/core/40_axzsh/functions/_axzsh +++ b/core/40_axzsh/functions/_axzsh @@ -8,6 +8,7 @@ _axzshctl() { enable-plugin\:"Enable plugin(s)." disable-plugin\:"Disable plugin(s)." list-enabled\:"List enabled plugin(s)." + plugin-help\:"Show help text for a plugin." reset-plugins\:"Reset active plugins to the default set." enable-default-plugins\:"Enable all default plugins." check-plugins\:"Check \"useful\" plugins." @@ -22,7 +23,7 @@ _axzshctl() { case "$state" in 'args') case "$words[2]" in - "enable-plugin") + "enable-plugin"|"plugin-help") compadd "$@" -- \ "$AXZSH"/plugins/*(/:t) \ "$AXZSH"/custom_plugins/*(N/:t) \