]> arthur.barton.de Git - ax-zsh.git/commitdiff
axzshctl: Implement new "plugin-help" subcommand
authorAlexander Barton <alex@barton.de>
Wed, 17 Jan 2024 10:38:13 +0000 (11:38 +0100)
committerAlexander Barton <alex@barton.de>
Wed, 17 Jan 2024 10:38:13 +0000 (11:38 +0100)
bin/axzshctl
core/40_axzsh/functions/_axzsh

index dea26d850afb471e9a75f693da051630a814cc08..943e4641bec19812fdb7a1ace1c7bb957aba4612 100755 (executable)
@@ -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
index ed3eab7fe5fe23c180f80a41f34360fd232b8d64..a403579507035e236d8cffd40926b158b6fa041c 100644 (file)
@@ -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) \