#!/bin/bash
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0

args=("$@")
orig_name=${_HANDLER:-}
handler_chain=()

export _HANDLER='wrapper.lambda_handler'
export ORIG_NAME="${orig_name}"

append_handler() {
    local handler_path="$1"
    local label="$2"

    if [[ -z "${handler_path}" ]]; then
        return 0
    fi

    if [[ ! -e "${handler_path}" ]]; then
        echo "Sealights integration: ${label} handler ${handler_path} does not exist."
        return 0
    fi

    handler_chain+=("${handler_path}")
}

if [[ "${DISABLE_DYNATRACE:-}" != "true" ]]; then
    append_handler "${SEALIGHTS_DYNATRACE_HANDLER_PATH:-/opt/dynatrace}" "Dynatrace"
fi

if [[ "${DISABLE_OTEL_HANDLER:-}" != "true" ]]; then
    if [[ -n "${SEALIGHTS_OTEL_HANDLER_PATH:-}" ]]; then
        append_handler "${SEALIGHTS_OTEL_HANDLER_PATH}" "OTEL"
    elif [[ -e /opt/otel-instrument ]]; then
        append_handler "/opt/otel-instrument" "OTEL"
    elif [[ -e /opt/otel-handler ]]; then
        append_handler "/opt/otel-handler" "OTEL"
    fi
fi

if [[ -n "${ENABLE_HANDLER:-}" ]]; then
    IFS=',' read -r -a handler_layers <<< "${ENABLE_HANDLER}"

    for handler in "${handler_layers[@]}"; do
        append_handler "${handler}" "custom"
    done
fi

if [[ ${#handler_chain[@]} -gt 0 ]]; then
    echo "Sealights integration: Executing wrapper chain: ${handler_chain[*]}"
    exec "${handler_chain[0]}" "${handler_chain[@]:1}" "${args[@]}"
fi

exec "${args[@]}"
