# shellcheck shell=dash

# shellcheck disable=SC2142,SC2154
alias docker:exec:parse='
    case "$1" in
        -d|--detach|-i|--interactive|-t|--tty|--privileged)
            parse_token="$1"
            ___x_cmd cmdstr ___X_CMD_DOCKER_EXEC_OPTS "$1";
            shift
            ;;

        -d*|-i*|-t*)
            local next_token="${1#-?}"
            parse_token="${1%"$next_token"}"
            ___x_cmd cmdstr ___X_CMD_DOCKER_EXEC_OPTS "$parse_token";
            shift
            set -- "-$next_token" "$@"
            ;;

        -e|--env|--env-file|--detach-keys|-u|--user|-w|--workdir)
            parse_token="$1"
            ___x_cmd cmdstr ___X_CMD_DOCKER_EXEC_OPTS "$1" "$2"
            shift 2
            ;;

        *)  false ;;
    esac'

___x_cmd_docker_exec___origin(){
    eval set -- ___x_cmd___docker_origin exec "$___X_CMD_DOCKER_EXEC_OPTS" "\"\$@\""
    "$@"
}

___x_cmd_docker_exec(){
    local ___X_CMD_DOCKER_EXEC_OPTS="";
    local parse_token

    local INSTALL_X=
    while [ $# -gt 0 ]; do
        [ "$1" != -x ] || {
            INSTALL_X=1
            shift
            continue
        }

        parse_token=""
        docker:exec:parse || break
    done
    local X_help_cmd; X_help_cmd='x help -m docker exec' help:arg-null:parse
    local container="$1";   shift
    docker:debug "Intercept container ==> $container"

    # intercept inside container: ___x_cmd_docker_setup
    [ -z "$INSTALL_X" ] || ___x_cmd_docker_setup_prepare exec "$container" || return $?

    [ "$#" -gt 0 ] || N=docker M="\"docker exec\" requires at least 2 arguments" log:ret:64
    local IFS=" "; docker:debug "Intercept command args ==> $*"
    ___x_cmd_docker_exec___origin "$container" "$@"
}
