#!/bin/sh

# fail on first error
set -e

function runuser {
    EXEC=0

    while true; do
        case "$1" in
        -E|--exec)
            EXEC=1
            shift
            ;;
        --)
            shift
            break
            ;;
        *)
            break
            ;;
        esac
    done

    if [ -n "$API_RUNAS" ]; then
        set -- su-exec "$API_RUNAS" "$@"
    fi
    
    if [ $EXEC -eq 1 ]; then 
        exec "$@"
    else
        "$@"
    fi
}

alias run-user=runuser

for part in $(dirname $0)/docker-entrypoint.d/*.sh; do 
    [ -x $part ] && source $part
done 

if [ "${1#-}" != "$1" ] || [ $# -eq 0 ]; then
    set -- uvicorn --app-dir /opt/api-server api:app --host ${API_HOST:-0.0.0.0} --port ${API_PORT:-8080} "$@"
fi

run-user --exec -- "$@"