Browse Source

feat(CLI): add `plugin info` subcommand (#9452)

Co-authored-by: Fernando Crespo <fxcrespo@iMac-44054.local>
Co-authored-by: Marc Cornellà <marc.cornella@live.com>
Fernando Crespo 3 years ago
parent
commit
9e5f280f87
1 changed files with 27 additions and 1 deletions
  1. 27 1
      lib/cli.zsh

+ 27 - 1
lib/cli.zsh

@@ -37,7 +37,7 @@ function _omz {
       changelog) local -a refs
         refs=("${(@f)$(command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}")
         _describe 'command' refs ;;
-      plugin) subcmds=('list:List plugins')
+      plugin) subcmds=('info:Get plugin information' 'list:List plugins')
         _describe 'command' subcmds ;;
       pr) subcmds=('test:Test a Pull Request' 'clean:Delete all Pull Request branches')
         _describe 'command' subcmds ;;
@@ -46,6 +46,8 @@ function _omz {
     esac
   elif (( CURRENT == 4 )); then
     case "$words[2]::$words[3]" in
+      plugin::info) compadd "$ZSH"/plugins/*/README.md(.N:h:t) \
+        "$ZSH_CUSTOM"/plugins/*/README.md(.N:h:t) ;;
       theme::use) compadd "$ZSH"/themes/*.zsh-theme(.N:t:r) \
         "$ZSH_CUSTOM"/**/*.zsh-theme(.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::) ;;
     esac
@@ -143,6 +145,7 @@ Usage: omz plugin <command> [options]
 
 Available commands:
 
+  info <plugin>   Get information of a plugin
   list            List all available Oh My Zsh plugins
 
 EOF
@@ -155,6 +158,29 @@ EOF
   _omz::plugin::$command "$@"
 }
 
+function _omz::plugin::info {
+  if [[ -z "$1" ]]; then
+    echo >&2 "Usage: omz plugin info <plugin>"
+    return 1
+  fi
+
+  local readme
+  for readme in "$ZSH_CUSTOM/plugins/$1/README.md" "$ZSH/plugins/$1/README.md"; do
+    if [[ -f "$readme" ]]; then
+      (( ${+commands[less]} )) && less "$readme" || cat "$readme"
+      return 0
+    fi
+  done
+
+  if [[ -d "$ZSH_CUSTOM/plugins/$1" || -d "$ZSH/plugins/$1" ]]; then
+    _omz::log error "the '$1' plugin doesn't have a README file"
+  else
+    _omz::log error "'$1' plugin not found"
+  fi
+
+  return 1
+}
+
 function _omz::plugin::list {
   local -a custom_plugins builtin_plugins
   custom_plugins=("$ZSH_CUSTOM"/plugins/*(-/N:t))