summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/cli.zsh109
1 files changed, 67 insertions, 42 deletions
diff --git a/lib/cli.zsh b/lib/cli.zsh
index e8ce26131..253c554c1 100644
--- a/lib/cli.zsh
+++ b/lib/cli.zsh
@@ -20,53 +20,43 @@ function omz {
}
function _omz {
- local -a cmds subcmds
- cmds=(
- 'help:Usage information'
- 'plugin:Commands for Oh My Zsh plugins management'
- 'pr:Commands for Oh My Zsh Pull Requests management'
- 'theme:Commands for Oh My Zsh themes management'
- 'update:Update Oh My Zsh'
- )
-
- if (( CURRENT == 2 )); then
- _describe 'command' cmds
- elif (( CURRENT == 3 )); then
- case "$words[2]" in
- plugin) subcmds=('list:List plugins')
- _describe 'command' subcmds ;;
- pr) subcmds=('test:Test a Pull Request' 'clean:Delete all Pull Request branches')
- _describe 'command' subcmds ;;
- theme) subcmds=('use:Load a theme' 'list:List themes')
- _describe 'command' subcmds ;;
- esac
- elif (( CURRENT == 4 )); then
- case "$words[2]::$words[3]" in
- theme::use) compadd "$ZSH"/themes/*.zsh-theme(.N:t:r) \
- "$ZSH_CUSTOM"/**/*.zsh-theme(.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::) ;;
- esac
- fi
+ local -a cmds subcmds
+ cmds=(
+ 'changelog:Print the changelog'
+ 'help:Usage information'
+ 'plugin:Manage plugins'
+ 'pr:Manage Oh My Zsh Pull Requests'
+ 'theme:Manage themes'
+ 'update:Update Oh My Zsh'
+ )
- return 0
+ if (( CURRENT == 2 )); then
+ _describe 'command' cmds
+ elif (( CURRENT == 3 )); then
+ case "$words[2]" in
+ 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')
+ _describe 'command' subcmds ;;
+ pr) subcmds=('test:Test a Pull Request' 'clean:Delete all Pull Request branches')
+ _describe 'command' subcmds ;;
+ theme) subcmds=('use:Load a theme' 'list:List themes')
+ _describe 'command' subcmds ;;
+ esac
+ elif (( CURRENT == 4 )); then
+ case "$words[2]::$words[3]" in
+ theme::use) compadd "$ZSH"/themes/*.zsh-theme(.N:t:r) \
+ "$ZSH_CUSTOM"/**/*.zsh-theme(.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::) ;;
+ esac
+ fi
+
+ return 0
}
compdef _omz omz
-
-function _omz::help {
- cat <<EOF
-Usage: omz <command> [options]
-
-Available commands:
-
- help Print this help message
- plugin <command> Manage plugins
- pr <command> Manage Oh My Zsh Pull Requests
- theme <command> Manage themes
- update Update Oh My Zsh
-
-EOF
-}
+## Utility functions
function _omz::confirm {
# If question supplied, ask it before reading the answer
@@ -111,6 +101,41 @@ function _omz::log {
esac >&2
}
+## User-facing commands
+
+function _omz::help {
+ cat <<EOF
+Usage: omz <command> [options]
+
+Available commands:
+
+ help Print this help message
+ changelog Print the changelog
+ plugin <command> Manage plugins
+ pr <command> Manage Oh My Zsh Pull Requests
+ theme <command> Manage themes
+ update Update Oh My Zsh
+
+EOF
+}
+
+function _omz::changelog {
+ local version=${1:-HEAD} format=${3:-"--text"}
+
+ if ! command git -C "$ZSH" show-ref --verify refs/heads/$version &>/dev/null && \
+ ! command git -C "$ZSH" show-ref --verify refs/tags/$version &>/dev/null && \
+ ! command git -C "$ZSH" rev-parse --verify "${version}^{commit}" &>/dev/null; then
+ cat <<EOF
+Usage: omz changelog [version]
+
+NOTE: <version> must be a valid branch, tag or commit.
+EOF
+ return 1
+ fi
+
+ "$ZSH/tools/changelog.sh" "$version" "${2:-}" "$format"
+}
+
function _omz::plugin {
(( $# > 0 && $+functions[_omz::plugin::$1] )) || {
cat <<EOF