_tick() {
    local cur prev command commands
    COMPREPLY=()
    command="${COMP_WORDS[1]}"
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    commands="$(tick list commands)"

    if [ "$prev" = "tick" ]; then
        COMPREPLY=($(compgen -W "$commands" -- "$cur"))
        return 0
    elif [ "$prev" = "attach" ] || [ "$prev" = "comment" ] || [ "$prev" = "edit" ] || [ "$prev" = "show" ]; then
        COMPREPLY=($(compgen -W "$(tick list -f '{short-hash}')" -- "$cur"))
        return 0
    else
        return 1
    fi
}

complete -F _tick tick
