# shellcheck shell=dash
___x_cmd log init pacman

xrc mirror proxy
xrc:mod:lib     pacman   __xmirror/_index __proxy ls install nv fz

___x_cmd_pacman___main(){
    [ "$#" -gt 0 ] ||   set -- fz

    ___x_cmd_hascmd pacman   ||  {
        pacman:warn "pacman is not found."
        return 1
    }

    local op="$1"; shift
    case "$op" in
        i|install)          ___x_cmd_pacman___install               "$@" ;;

        ls)                 ___x_cmd_pacman_ls                      "$@" ;;
        la)                 ___x_cmd_pacman_la                      "$@" ;;

        nv)                 ___x_cmd_pacman___nv                    "$@" ;;
        fz)                 ___x_cmd_pacman___fz                    "$@" ;;
        --fzdata)           ___x_cmd_pacman_install___fz_data       "$@" ;;
        --fzfpreview)       ___x_cmd_pacman_install___fzf_preview   "$@" ;;
        mirror|--xmirror)   ___x_cmd_pacman___xmirror               "$@" ;;
        proxy|--xproxy)     ___x_cmd_pacman___xproxy                "$@" ;;

        browse)             ___x_cmd_pacman___repo_browse                ;;
        --help|-h)          ___x_cmd help -m pacman;              return ;;

        --runmain|--)       ___x_cmd_cmds pacman                    "$@" ;;
        *)                  ___x_cmd_cmds pacman              "$op" "$@" ;;
    esac
}

___x_cmd_pacman___init(){
    ___X_CMD_PACMAN_CACHE_PATH="$___X_CMD_ROOT_DATA/pacman/cache"
    ___x_cmd mkdirp "$___X_CMD_PACMAN_CACHE_PATH"
}

___x_cmd_pacman___init

___x_cmd_pacman___exec(){
    if [ "$(id -u)" -ne 0 ]; then
        ___x_cmd sudo pacman "$@"
    else
        ___x_cmd_cmds pacman "$@"
    fi
}

___x_cmd_pacman___repo_browse(){
    ___x_cmd browse "https://wiki.archlinux.org/title/pacman"
}

___x_cmd_pacman___lsraw(){
    ___x_cmd_cmds pacman -Sl | ___x_cmd_cmds awk '{print $2}'
}

___x_cmd_pacman___lsraw_(){
    x_="$___X_CMD_PACMAN_CACHE_PATH/lsname"
    [ "$x_" -nt "/var/lib/pacman/sync/core.db" ] || {
        ___x_cmd rmrf "$x_"
        ___x_cmd ensurefp "$x_"
        ___x_cmd_pacman___lsraw > "$x_"
    }
    [ -f "$x_" ]
}
