# shellcheck shell=dash

# Introducing
# ___X_CMD_DOCKER_IMAGE_NAME_PREFIX

___x_cmd_docker_image(){
    [ $# -gt 0 ]    ||  set -- ls

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m docker image              ;;
        # app|"")        ___x_cmd_docker_images app                 ;;
        ls|exist|id|lsid|rma|rm)
                        ___x_cmd_docker_image_"$op"           "$@" ;;
        refit)          ___x_cmd_docker_refit                 "$@" ;;

        *)              ___x_cmd___docker_origin image "$op"  "$@" ;;
    esac
}

___x_cmd_docker_image_ls(){
    ___x_cmd_docker_images "$@"
}

___x_cmd_docker_image_exist(){
    local repo="${1%%:*}"
    local tag="${1#*:}"

    [ "$repo" != "$1" ] || tag=latest

    ___x_cmd___docker_origin image ls --format table | \
        ___x_cmd_cmds_awk -v repo="$repo" -v tag="$tag" -v code=1 \
            '(NR>1)&&($1==repo)&&($2==tag){
                code=0;
                exit 0;
            } END{ exit(code); }'
}

___x_cmd_docker_image_id(){
    local repo="${1%%:*}"
    local tag="${1#*:}"

    [ "$repo" != "$1" ] || tag=latest

    ___x_cmd___docker_origin image ls --format table | \
        ___x_cmd_cmds_awk -v repo="$repo" -v tag="$tag" -v code=1 \
            '(NR>1)&&($1==repo)&&($2==tag){
                print $3
                code=0;
                exit 0;
            } END{ exit(code); }'
}

___x_cmd_docker_image_lsid(){
    ___x_cmd_docker_image_ls --tsv | awk 'NR>1{ print $1; }'
}

# remove all
___x_cmd_docker_image_rma(){
    ___x_cmd_docker_image_lsid | ___x_cmd line args -n 10 '___x_cmd docker image rm $@'
}


___x_cmd_docker_image_rm(){
    local IMAGE_OPTS
    local prefix=""
    while [ $# -gt 0 ]; do
        case "$1" in
            -f|--force|--no-prune)
                            ___x_cmd cmdstr IMAGE_OPTS "$1" ;;
            --platform)     ___x_cmd cmdstr IMAGE_OPTS "$1" "$2" ; arg:2:shift ;;
            --prefix)       prefix="$2" ; arg:2:shift ;;
            *)              break
        esac
    done

    if [ $# -gt 0 ]; then
        eval set -- "$IMAGE_OPTS" -- \"\$@\"
        ___x_cmd___docker_origin image remove "$@" || return $?
    fi

    if [ -n "$prefix" ]; then
        ___x_cmd___docker_origin image ls --format table | \
            ___x_cmd_cmds awk -v prefix="$prefix" 'NR>1{ name=$1 ":" $2 ;  if (name~prefix) print name; }' | \
                ___x_cmd line args -n 10 "___x_cmd___docker_origin image remove $IMAGE_OPTS \"\$@\""
    fi
}
