# shellcheck shell=dash

# pull the image then rename
___x_cmd_docker_mirror_pull(){
    local mirror=
    local update=1
    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m docker mirror pull; return 0  ;;
            -m|--mirror)    mirror="$2";  [ $# -ge 2 ] || N=docker M="Please provide mirror url" log:ret:64;  shift 2 ;;
            --noupdate)     update=; shift ;;
            *)              break
        esac
    done

    local name="$1"
    case "$name" in
        *:*)    ;;
        *)      name="${name}:latest"
    esac

    if [ -z "$update" ] && ___x_cmd_docker image exist "$name" ; then
        docker:info "Image already existed -> $name"
        return 0
    fi

    [ -n "$mirror" ] || {
        local x_
        ___x_cmd_docker_mirror_get_
        mirror="$x_"
    }

    [ -n "$mirror" ] || {
        ___x_cmd_cmds docker pull "$name"
        # N=docker M="Please provide mirror using --mirror <mirror-url> or setting the default mirror using 'x docker mirror set'" log:ret:1
        return
    }

    docker:info "run command -> docker pull $mirror/$name"
    ___x_cmd_cmds docker pull     "${mirror}/${name}"         || N=docker M="Fail to pull image -> $mirror/$name" log:return
    ___x_cmd_cmds docker tag      "${mirror}/${name}" "$name" || return $?
    ___x_cmd_cmds docker image rm "${mirror}/${name}"
}
