# shellcheck shell=dash
___x_cmd_brew_ls(){
    [ $# -gt 0 ]    ||  set - --auto

    case "$1" in
        -h|--help)      ___x_cmd help -m brew ls; return ;;
    esac

    local scope=install
    local fmt=auto
    while [ $# -gt 0 ]; do
        case "$1" in
            -c|--csv)       fmt=csv         ;;
            -t|--tsv)       fmt=tsv         ;;
            --auto|--app)   fmt="${1#--}"   ;;
            *)              break           ;;
        esac
        shift
    done

    ___x_cmd_brew_ls___"${fmt}" "$@"
}

# Section: ls --install
___x_cmd_brew_ls___raw(){
    ___x_cmd_brew___exec list "$@"
}

___x_cmd_brew_ls___csv(){   ___x_cmd_brew_ls___raw | ___x_cmd csv tab; }
___x_cmd_brew_ls___tsv(){   ___x_cmd_brew_ls___csv | ___x_cmd csv static_tab; }

___x_cmd_brew_ls___app(){
    brew:info "Find installed software"
    local software=; software="$( ___X_CMD_RUNMODE="$___X_CMD_RUNMODE" ___x_cmdexe brew --fzdata ___x_cmd_brew_ls___raw )" || return $?
    [ -n "$software" ] || {
        brew:error "Nor found software"
        return 1
    }

    local id=
    ___x_cmd ui select id "NEXT"   \
        "x brew uninstall $software"    \
        "x brew reinstall $software"    \
        "x brew info      $software"    \
        "browse repo of   $software"    \
        "return"     || return $?

    case "$id" in
        1)      ___x_cmd brew uninstall "$software" ;;
        2)      ___x_cmd brew reinstall "$software" ;;
        3)      ___x_cmd brew info      "$software" ;;
        4)      ___x_cmd browse "https://formulae.brew.sh/formula/${software}" ;;
        *)      return 0 ;;
    esac
}

___x_cmd_brew_ls___auto(){
    if      ___x_cmd_is_stdout2tty; then        ___x_cmd_brew_ls___app
    else                                        ___x_cmd_brew_ls___tsv
    fi
}
# EndSection


___x_cmd_brew___fz_data(){
    "$@" | FZF_DEFAULT_OPTS="
--ansi
--reverse
--height='80%'
--bind='ctrl-w:toggle-preview-wrap'
--bind='ctrl-r:change-preview-window(right,70%|down,40%,99%,border-horizontal|hidden|right)'
"   ___x_cmd fzf --preview='HOMEBREW_COLOR=1 HOMEBREW_NO_EMOJI=0 ___x_cmdexe brew info {1} 2>/dev/null ' \
            --preview-window=right:70%:wrap
}

