ohmyzsh/plugins/legit/_legit
2012-03-25 15:06:43 -04:00

89 lines
3.7 KiB
Text

#compdef legit
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for legit (https://github.com/kennethreitz/legit).
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Ryan James (https://github.com/autoplectic)
#
# ------------------------------------------------------------------------------
# -*- mode: zsh; -*-
# ------------------------------------------------------------------------------
_legit ()
{
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments -C \
'1:command:->command' \
'*::options:->options'
case $state in
(command)
local -a subcommands
subcommands=(
'settings: Display and edit the current Legit settings.'
'branches: Get a nice pretty list of available branches.'
'sync: Synchronizes the given branch. Defaults to current branch. Stash, Fetch, Auto-Merge/Rebase, Push, and Unstash. You can only sync published branches.'
'switch: Switches to specified branch. Defaults to current branch. Automatically stashes and unstashes any changes.'
'sprout: Creates a new branch off of the specified branch. Switches to it immediately.'
'graft: Merges specified branch into the second branch, and removes it. You can only graft unpublished branches.'
'publish: Publishes specified branch to the remote.'
'unpublish: Removes specified branch from the remote.'
'harvest: Syncs a branch with a given branch. Defaults to current.'
)
_describe -t commands 'legit' subcommands
;;
(options)
case $line[1] in
(settings|branches)
;;
(sync|switch|publish|unpublish)
_arguments \
':branch:__git_branch_names'
;;
(sprout)
_arguments \
'1:branch:__git_branch_names' \
'2:new-branch'
;;
(graft)
_arguments \
'1:branch:__git_branch_names' \
'2:into-branch:__git_branch_names'
;;
(harvest)
_arguments \
'1:from-branch:__git_branch_names' \
'2:to-branch:__get_branch_names'
;;
esac
esac
}
__git_branch_names () {
local expl
declare -a branch_names
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
__git_command_successful || return
_wanted branch-names expl branch-name compadd $* - $branch_names
}
__git_command_successful () {
if (( ${#pipestatus:#0} > 0 )); then
_message 'not a git repository'
return 1
fi
return 0
}