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>
This commit is contained in:
Fernando Crespo 2021-01-03 09:55:57 -03:00 committed by GitHub
parent 0e833b622b
commit 9e5f280f87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 1 deletions

View File

@ -37,7 +37,7 @@ function _omz {
changelog) local -a refs changelog) local -a refs
refs=("${(@f)$(command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}") refs=("${(@f)$(command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}")
_describe 'command' refs ;; _describe 'command' refs ;;
plugin) subcmds=('list:List plugins') plugin) subcmds=('info:Get plugin information' 'list:List plugins')
_describe 'command' subcmds ;; _describe 'command' subcmds ;;
pr) subcmds=('test:Test a Pull Request' 'clean:Delete all Pull Request branches') pr) subcmds=('test:Test a Pull Request' 'clean:Delete all Pull Request branches')
_describe 'command' subcmds ;; _describe 'command' subcmds ;;
@ -46,6 +46,8 @@ function _omz {
esac esac
elif (( CURRENT == 4 )); then elif (( CURRENT == 4 )); then
case "$words[2]::$words[3]" in 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) \ theme::use) compadd "$ZSH"/themes/*.zsh-theme(.N:t:r) \
"$ZSH_CUSTOM"/**/*.zsh-theme(.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::) ;; "$ZSH_CUSTOM"/**/*.zsh-theme(.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::) ;;
esac esac
@ -143,6 +145,7 @@ Usage: omz plugin <command> [options]
Available commands: Available commands:
info <plugin> Get information of a plugin
list List all available Oh My Zsh plugins list List all available Oh My Zsh plugins
EOF EOF
@ -155,6 +158,29 @@ EOF
_omz::plugin::$command "$@" _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 { function _omz::plugin::list {
local -a custom_plugins builtin_plugins local -a custom_plugins builtin_plugins
custom_plugins=("$ZSH_CUSTOM"/plugins/*(-/N:t)) custom_plugins=("$ZSH_CUSTOM"/plugins/*(-/N:t))