mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-02 02:19:06 +01:00
Added legit autocomplete script
This commit is contained in:
parent
eddcb6e506
commit
d941433910
1 changed files with 89 additions and 0 deletions
89
plugins/legit/_legit
Normal file
89
plugins/legit/_legit
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue