
# xd snapx
___x_cmd_docker_snapx(){
    # LIST='START_OPTS RUN_TOPS name image usecache daemon' arg:local:empty
    local RUN_OPTS=""

    local name=""
    local image=""

    # local imagetype="alpine"

    arg:init docker
    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)              ___x_cmd help -m docker snap "$@"; return 0 ;;

            -)                      name=x;             shift 1 ;;
            -n|--name)              name="$2";          arg:2:shift ;;

            --pwd)                  arg:add RUN_OPTS    --workdir /p ;    shift 1 ;;
            -e|--env)               arg:add RUN_OPTS    --env   "$2" ;    arg:2:shift ;;

            --ws)                   shift 1 ;;

            --user)                 arg:add RUN_OPTS --user "$2" ;        arg:2:shift ;;
            -r|--root)              arg:add RUN_OPTS --user root ;        shift 1 ;;

            :*)                     name="${1#:}";      shift 1 ;;

            --*)                    arg:invalid:ret:64 ;;

            *)                      break ;;
        esac
    done

    [ ! -t 0 ]          || ___x_cmd cmdstr RUN_OPTS --tty
    ___x_cmd cmdstr RUN_OPTS -i      # ___x_cmd cmdstr RUN_OPTS --tty

    [ $# -gt 0 ]    || set -- bash

    if [ -n "$___X_CMD_DOCKER_IMGTYPE" ]; then
        local x_
        ___x_cmd_docker_snap___imageprefix_ "$___X_CMD_DOCKER_IMGTYPE"
        ___x_cmd str startswith "$name" "${x_}-" || {
            name="${x_}-${name}"
        }
    fi

    eval ___x_cmd docker exec "$RUN_OPTS" "${name}" "\"\$@\""
}

