2012-01-19 22:32:27 +00:00
|
|
|
#compdef git-hub
|
|
|
|
#autoload
|
|
|
|
|
2012-02-01 04:37:51 +00:00
|
|
|
#
|
|
|
|
# Completes git-hub.
|
|
|
|
#
|
|
|
|
# Authors:
|
|
|
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
|
|
|
#
|
|
|
|
|
2012-02-02 23:25:21 +00:00
|
|
|
local state remotes remote branches files ret=1
|
2012-01-19 22:32:27 +00:00
|
|
|
|
|
|
|
_arguments -C -s -S \
|
|
|
|
'1::args:->remote' \
|
2012-02-02 23:25:21 +00:00
|
|
|
'2::args:->branch' \
|
|
|
|
'3::args:->file' && ret=0
|
2012-01-19 22:32:27 +00:00
|
|
|
|
|
|
|
case "$state" in
|
|
|
|
(remote)
|
|
|
|
remotes=($(
|
2012-09-24 05:46:24 +00:00
|
|
|
git config --local --get-regexp 'remote.*.url' \
|
|
|
|
| awk 'BEGIN {FS="."} ; {print $2}'
|
|
|
|
))
|
2012-01-19 22:32:27 +00:00
|
|
|
_describe -t branch 'remotes' remotes && ret=0
|
|
|
|
;;
|
|
|
|
(branch)
|
|
|
|
remote="$words[(($CURRENT - 1))]"
|
|
|
|
branches=($(
|
2012-09-24 05:46:24 +00:00
|
|
|
git ls-remote --heads "$remote" \
|
|
|
|
| awk '{gsub(/refs\/heads\//, "", $2)} ; {print $2}'
|
2012-01-19 22:32:27 +00:00
|
|
|
))
|
|
|
|
_describe -t branch 'branches' branches && ret=0
|
|
|
|
;;
|
2012-02-02 23:25:21 +00:00
|
|
|
(file)
|
|
|
|
files=(${(0)"$(_call_program files git ls-files -z --exclude-standard 2>/dev/null)"})
|
|
|
|
_wanted file expl 'file' _multi_parts - / files && ret=0
|
|
|
|
;;
|
2012-01-19 22:32:27 +00:00
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
2012-01-21 00:48:24 +00:00
|
|
|
|