
# preview docker inspect ...

___x_cmd_docker_fz_ps(){
    case "$1" in
        -h|--help)
            ___x_cmd help -m docker fz ps "$@"; return 0 ;;
        --preview)
            shift
            ___x_cmd_docker_fz_ps___preview "$@"; return $? ;;
    esac

    ___x_cmd_docker_fz___info

    local ___X_CMD_DOCKER_FZ_APP=ps
    while true; do
        ___x_cmd_docker_fz_"${___X_CMD_DOCKER_FZ_APP}"_main || return $?
    done
}

___x_cmd_docker_fz_ps_main(){
    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)
                ___x_cmd help -m docker fz ps "$@"; return 0 ;;
            --preview)
                shift
                ___x_cmd_docker_fz_ps___preview "$@"; return $? ;;
            *)
                break ;;
        esac
        shift
    done

    local x_
    local id
    local name
    local state

    local selid
    local ___X_CMD_DOCKER_PS_EXIT

    local err=0

    while true; do
        ___x_cmd storerat_ ___x_cmd_docker_fz_ps___fz
        err=$?
        [ $err -ne 130 ]    ||    return 130

        # id="${x_%%"${___X_CMD_UNSEENCHAR_HT}"*}"
        # name="${x_%"${___X_CMD_UNSEENCHAR_HT}"*}";        name="${name##*"${___X_CMD_UNSEENCHAR_HT}"}"

        case "$x_" in
            "|switch|"*)
                ___X_CMD_DOCKER_FZ_APP=img
                return 0
                ;;
            "|goback|"*)
                ___X_CMD_DOCKER_FZ_APP=img
                return 0
                ;;
        esac

        {
            read -r id
            read -r name
            read -r state
        } <<A
$(___x_cmd_cmds awk -v data="$x_" 'BEGIN{
    $0 = data
    print $1
    print $5
    print $4
}')
A


        ___x_cmd_docker_ps___app_choose "$id" "$name" "$state"
        [ -z "$___X_CMD_DOCKER_PS_EXIT" ] || return 0

        # ___x_cmd ui select selid "For container -> $name ($id)" \
        #     "more container info"   \
        #     "stop container"        \
        #     "remove container"      \
        #     "exit"

        # case "$selid" in
        #     1)      ___x_cmd docker inspect "$id" | ___x_cmd j2y; return $? ;;
        #     2)      ___x_cmd docker stop "$id" ;;
        #     3)      ___x_cmd docker rm "$id" ;;
        #     *)      return ;;
        # esac
    done
}

# switch all/part
# switch log/info

___x_cmd_docker_fz_ps___fz(){
    {
        ___x_cmd docker ps --all --tsv
    } | {
        ___x_cmd_cmds awk -f "$___X_CMD_ROOT_MOD/docker/lib/fz/awk/ps.awk"
    } | {
        FZF_DEFAULT_OPTS="
            $FZF_DEFAULT_OPTS
            --exact
            --ansi
            --reverse
            --height='80%'
            --bind='ctrl-w:toggle-preview-wrap'
            --bind='ctrl-r:change-preview-window(60%|90%|hidden)'
            --bind='tab:print(|goback|)+accept'
            --bind='ctrl-s:print(|switch|)+accept'
            --bind='right:accept'
            --preview-window='down:60%,wrap'
            --preview='___x_cmdexe docker fz ps --preview {1}'
        "   ___x_cmd fzf --with-nth=1,2,3,4,5,6,7 \
                --header='[id]    [created]           [state] [name]  [image]  [port]  [command]' \
                --delimiter='\t' --ansi
    }
}

___x_cmd_docker_fz_ps___preview(){
    printf "\033[36m%s\033[0m\n" "--- # docker logs -n 12 $1"
    ___x_cmd docker logs -n 12 "$1"

    printf "\033[36m\n%s\033[0m\n" "--- # docker inspect $1"
    ___x_cmd docker inspect "$1" | ___X_CMD_JSON2YML_COLOR=1 ___x_cmd j2y
}
