#compdef git-link
#description get a repo browser link to a git object 

# zsh completion for the git link command
# http://github.com/gvalkov/git-link

# For best results, please upgrade your _zsh completion to the latest version:
# http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD

_git-link () {
    local curcontext=$curcontext state line ret=1
    typeset -A opt_args

    _arguments -w -C -S -s \
    '(-h --help)'{-h,--help}'[show this help message and exit]' \
    '(-v --version)'{-v,--version}'[show version and exit]' \
    '(-c --clipboard)'{-c,--clipboard}'[copy link to clipboard (overwrites link.clipboard)]' \
    '(-u --url)'{-u,--url}'[repo browser base url (overwrites link.url)]:arg' \
    '(-b --browser)'{-b,--browser}'[repo browser type (overwrites link.browser)]:name:->browser'  \
    '(-r --raw)'{-r,--raw}'[show raw blob if possible ]' \
    '*:: :->object' && ret=0

    case $state in
        (object)
        _alternative \
        'path::_files' \
        'commits::__git_commits' \
        'tags::__git_tags' \
        'trees::__git_trees' \
        'blobs::__git_blobs' && ret=0
        ;;

        (browser)
        compadd cgit gitweb github github.private repo.or.cz
        ;;
    esac

}

zstyle ':completion:*:*:git:*' user-commands link:'get a repo browser link to a git object'

# vim: ft=zsh:
