#! /usr/bin/env bash

jlmkr () {
    sudo VISUAL="${VISUAL:-}" EDITOR="${EDITOR:-}" $SCALE_POOL_ROOT/jailmaker/jlmkr.py "${@:---help}"
}

JAIL_UID=${JAIL_UID:-${UID}}

jlmkr-exec () {
    local cli='cd /srv/runtipi; '"${1:?Must supply command} "${2:+"$(
        printf '\"%s\" ' "${@:2}"
    )"}

    if jlmkr exec runtipi true; then
        [ -n "$QUIET" ] || printf 'jlmkr UID:\t%s\ncli:\t\t%s\n' "${JAIL_UID}" "$cli"
        jlmkr shell --uid "${JAIL_UID}" runtipi /bin/bash -c "$cli"
    else
        echo "ERROR: ${_ERROR_MGS:-"Please check if runtipi jail has started! Have you tried 'full-start'?"}" >&2
        exit -1
    fi
}

runtipi-cli() {
    jlmkr-exec ./runtipi-cli "${@}"    
}

runtipi-app-docker-compose() {
    local APP="${1:-Must supply app name}"
    local LOCAL_YML="user-config/${APP}/docker-compose.yml"

    jlmkr exec runtipi test -e "/srv/runtipi/${LOCAL_YML}" || LOCAL_YML=""
    [ -z "$LOCAL_YML" ] || LOCAL_YML="--file ${LOCAL_YML}"

    jlmkr-exec docker compose \
        --env-file user-config/.env.local \
        --env-file app-data/${APP}/app.env \
        --env-file user-config/${APP}/app.env \
        --project-name ${APP} \
        --file apps/${APP}/docker-compose.yml \
        --file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml \
        ${LOCAL_YML} ${@:2}
}

case "${1}" in
    cli)
        runtipi-cli "${@:2}"
        ;;
    log)
        jlmkr-exec docker compose --env-file user-config/.env.local logs --tail=${TAIL:-40} "${2:-runtipi}" ${3:+"${@:3}"}
        ;;
    start)
        runtipi-cli start --env-file user-config/.env.local --no-permissions
        ;;
    full-start)
        if ! jlmkr exec runtipi true; then
            jlmkr start runtipi 
            sleep 1s
        fi
        _ERROR_MSG="ERROR: failed to invoke a command inside the runtipi jail and can't start the jail." \
        runtipi-cli start --env-file user-config/.env.local --no-permissions
        ;;
    exec)
        jlmkr-exec "${@:2}"
        ;;
    docker)
        jlmkr-exec docker "${@:2}"
        ;;
    dcoapp)
        runtipi-app-docker-compose "${@:2}"
        ;;
    setup)
        ln -s "${BASH_SOURCE[0]}" "$HOME/.local/bin/"
        ;;
    *)
        printf '%s\n' \
           "Usage:" \
           "" \
           "cli" \
           "log" \
           "start" \
           "full-start" \
           "exec" \
           "docker" \
           "dcoapp" \
           "setup"

        ;;
esac