# shellcheck shell=dash

# using endlessh
# limit the resource

___x_cmd_endlessh_run(){
    local port=""
    local name=x-endlessh

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m endlessh run  "$@" ; return ;;
            -p|--port)      port=$2; [ $# -ge 2 ] || N=endlessh M="Please provide a port" log:ret:64;  shift 2 ;;
            --name)         name=$2; [ $# -ge 2 ] || N=endlessh M="Please provide a container name" log:ret:64;  shift 2 ;;
            *)              break
        esac
    done

    [ -n "$port" ] || port=2222
    ___x_cmd_hascmd docker || N=endlessh M="docker command not found. This script requires Docker to run" log:ret:1
    ___x_cmd_endlessh_run_docker
}

# Require you have docker
# Very strict protocol

___x_cmd_endlessh_run_docker(){
    # Multiple ports ...

    # --cap-drop ALL --cap-add SYS_TIME
    # --cpu 1
    # TODO: in the future we will limit the harddisk writing
    # TODO: find the way to prevent any local network visiting

    set -- --cpus 0.5 --memory 100MB

    local e
    while read -r e; do
        set -- "$@" -p "$e":"$e"
    done <<A
$port
A

    set -- "$@" shizunge/endlessh-go -logtostderr -v=1

    while read -r e; do
        set -- "$@" -port "$e"
    done <<A
$port
A

    ___x_cmd_cmds docker run -d --name "$name" "$@"
}
