mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-02 02:19:06 +01:00
89 lines
3.7 KiB
Text
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
|
|
}
|