#!/usr/bin/env bash
set -e
cd "$(dirname "$0")"

if [[ -z $1 || $1 = -* ]]; then
    set -- up "$@"
fi

function with_set_x() {
    set -x
    "$@"
    {
        ec=$?
        set +x
        return $ec
    } 2>/dev/null
}

function build() {
    # podman build -t ghcr.io/sshuttle/sshuttle-testbed .
    with_set_x docker build --progress=plain -t ghcr.io/sshuttle/sshuttle-testbed -f Containerfile .
}

function compose() {
    # podman-compose "$@"
    with_set_x docker compose "$@"
}

function get-ip() {
    local container_name=sshuttle-testbed-"$1"
    docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$container_name"
}

if [[ $1 == get-ip ]]; then
    shift
    get-ip "$@"
else
    if [[ $* = *--build* ]]; then
        build
    fi
    compose "$@"
fi