_snapcraft()
{
    local cur prev opts
    _init_completion -s || return

    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="help init list-plugins plugins login logout export-login list-keys keys create-key register-key register registered list-registered push release clean cleanbuild pull build sign-build stage prime snap update define search gated validate history status close enable-ci"

    case "$prev" in
    help)
        plugins=$(snapcraft list-plugins)
        COMPREPLY=( $(compgen -W "$plugins" -- $cur))
        return 0
        ;;
    snap)
        _filedir -d
        return 0
        ;;
    upload | push | sign-build)
        _filedir 'snap'
        return 0
        ;;
    enable-ci)
        COMREPLY=( travis )
        return 0
        ;;
    *)
        ;;
    esac

    COMPREPLY=( $(compgen -W "$opts" -- $cur) )
    return 0
}
complete -F _snapcraft snapcraft
