#!/bin/bash

if test "$METWORK_PROFILE_LOADED" == "1"; then
    if test "$MFEXT_HOME" != "/opt/metwork-mfext-master"; then
        echo "WARNING : Metwork profile is already loaded with MFEXT_HOME = $MFEXT_HOME"
        echo "          We load Metwork profile with MFEXT_HOME = /opt/metwork-mfext-master"
        echo "          But you may encounter problems by mixing 2 Metwork versions"
    fi
fi

export METWORK_PROFILE_LOADING=1

# We se the umask
umask 0022

# We set MFEXT_HOME and MFEXT_VERSION
export MFEXT_HOME="/opt/metwork-mfext-master"
MFEXT_VERSION=$(cat "${MFEXT_HOME}/config/version" 2>/dev/null)
if test "${MFEXT_VERSION}" = ""; then
    # we use build version (config/version is better with released versions)
    MFEXT_VERSION=master.ci3308.163df259
fi
export MFEXT_VERSION

# We load bash_utils functions
# shellcheck disable=SC1091
. /opt/metwork-mfext-master/lib/bash_utils.sh

if test -f /etc/metwork.extraprofile; then
    # We load this extra profile if any
    # shellcheck disable=SC1091
    . /etc/metwork.extraprofile
fi

# Wet set MFMODULE, MFMODULE_HOME env variables
export MFMODULE=MFEXT
export MFMODULE_HOME=/opt/metwork-mfext-master
export MFMODULE_VERSION=master.ci3308.163df259
export MFEXT_HOME=/opt/metwork-mfext-master
export MFEXT_VERSION=master.ci3308.163df259
export MFMODULE_LOWERCASE=mfext

# Set a good default value for MFMODULE_RUNTIME_SUFFIX if necessary
if ! test "$(whoami)" = "mfext"; then
    if test "${MFMODULE_RUNTIME_SUFFIX}" = ""; then
        export MFMODULE_RUNTIME_SUFFIX=metwork/mfext
    fi
fi

# Set MFMODULE_RUNTIME_HOME and PYTHON_EGG_CACHE

    export PYTHON_EGG_CACHE="${TMPDIR:-/tmp}/metwork_python_egg_cache"

if ! test -d "${PYTHON_EGG_CACHE}"; then
    mkdir -p "${PYTHON_EGG_CACHE}"
fi

# Get the metwork configuration name
if test "${MFCONFIG:-}" = ""; then
    MFCONFIG=$(cat /etc/metwork.config 2>/dev/null |sed 's/ //g' |grep -v '^#' |head -1)
    if test "${MFCONFIG}" = ""; then
        MFCONFIG=GENERIC
    fi
fi
export MFCONFIG

# We set LC_NUMERIC to C
export LC_NUMERIC=C

if test "${PKG_CONFIG_PATH}" = ""; then
    # We modify PKG_CONFIG_PATH
    field_prepend PKG_CONFIG_PATH /usr/lib64/pkgconfig
    field_prepend PKG_CONFIG_PATH /lib64/pkgconfig
    export PKG_CONFIG_PATH
fi

# We set the MFMODULE_VERSION environnement variable
if test -f ${MFMODULE_HOME}/config/version; then
    MFMODULE_VERSION=$(cat ${MFMODULE_HOME}/config/version 2>/dev/null |head -1)
else
    MFMODULE_VERSION=unknown
fi
export MFMODULE_VERSION

# We set the MFMODULE_STATUS environnement variable
if test -f ${MFMODULE_HOME}/var/status; then
    MFMODULE_STATUS=$(cat ${MFMODULE_HOME}/var/status 2>/dev/null)
else
    MFMODULE_STATUS=unknown
fi
export MFMODULE_STATUS

# FIXME: do not hardcode this
export PYTHON3_SHORT_VERSION=3.13

# We configure the layers system
field_prepend LAYERAPI2_LAYERS_PATH /opt/metwork-mfext-master
field_prepend LAYERAPI2_LAYERS_PATH /opt/metwork-mfext-master/opt

export LAYERAPI2_LAYERS_PATH

# We load the default layer (if installed)
N=$(/opt/metwork-mfext-master/opt/core/bin/is_layer_installed default@${MFMODULE_LOWERCASE} 2>/dev/null)
if test "${N}" = "1"; then
    # note: if we are in a plugin_env, we don't load default layers (issue mfserv#220)
    if test "${MFEXT_CURRENT_PLUGIN_NAME:-}" = ""; then
        # We load the default layer
        layer_load default@${MFMODULE_LOWERCASE} >"/tmp/layer_load_${MFMODULE_LOWERCASE}_$$" 2>&1
        N=$("/opt/metwork-mfext-master/opt/core/bin/is_layer_loaded" default@${MFMODULE_LOWERCASE} 2>/dev/null)
        if test "${N}" != "1"; then
            ${MFEXT_HOME}/opt/core/bin/echo_bold "[ERROR]: Can't load layer default@${MFMODULE_LOWERCASE}"
            ${MFEXT_HOME}/opt/core/bin/echo_bold "[INFO]: One of the required dependency layers is probably not installed ==> so no layer at all has been loaded"
            ${MFEXT_HOME}/opt/core/bin/echo_bold "=> see /tmp/layer_load_${MFMODULE_LOWERCASE}_$$ for details"
            export PROFILE_ERROR=1
            unset METWORK_PROFILE_LOADING
            return 1
        fi
        rm -f "/tmp/layer_load_${MFMODULE_LOWERCASE}_$$"
    fi
else
    # The default layer is not installed
    # => we load the root and core layer (failback for developpers)
    layer_load root@mfext >/dev/null 2>&1
    layer_load core@mfext >/dev/null 2>&1
fi

if test -f "${MFEXT_HOME}/opt/python3_scientific/share/salem/salem-sample-data-57e6d694aa470b967336f5ca2d4fc743c5c8efd6.zip"; then
    if test ! -d "${HOME}/.salem_cache"; then
        mkdir -p "${HOME}/.salem_cache"
    fi
    if test ! -L "${HOME}/.salem_cache/salem-sample-data-57e6d694aa470b967336f5ca2d4fc743c5c8efd6.zip"; then
        rm -f "${HOME}/.salem_cache/salem-sample-data-57e6d694aa470b967336f5ca2d4fc743c5c8efd6.zip"
        ln -s "${MFEXT_HOME}/opt/python3_scientific/share/salem/salem-sample-data-57e6d694aa470b967336f5ca2d4fc743c5c8efd6.zip" "${HOME}/.salem_cache/salem-sample-data-57e6d694aa470b967336f5ca2d4fc743c5c8efd6.zip"
    fi
    if test -d "${MFEXT_HOME}/opt/core/share/.cargo"; then
        if test ! -e "${HOME}/.cargo"; then
            ln -s "${MFEXT_HOME}/opt/core/share/.cargo" "${HOME}/.cargo"
        fi
    fi
fi

# A little kind of magic to deal with [log]/json_file=AUTO
if test "${MFEXT_LOG_JSON_FILE:-}" = "AUTO"; then
    export MFLOG_JSON_FILE="null"
fi

if test "${MFEXT_LOG_NUMBER_OF_ROTATED_FILES:-}" != ""; then
    export LOGPROXY_ROTATED_FILES="${MFEXT_LOG_NUMBER_OF_ROTATED_FILES:-}"
    export LOGPROXY_ROTATION_TIME="${MFEXT_LOG_MAX_AGE_BEFORE_ROTATION:-}"
    export LOGPROXY_ROTATION_SIZE="${MFEXT_LOG_MAX_SIZE_BEFORE_ROTATION:-}"
fi
if test "${MFEXT_LOG_CHMOD:-}" != ""; then
    export LOGPROXY_CHMOD="${MFEXT_LOG_CHMOD:-}"
fi

if test "${MFEXT_MISC_CORE_SIZE:-}" != "-1"; then
ulimit -c "${MFEXT_MISC_CORE_SIZE:-}"
fi

unset METWORK_PROFILE_LOADING
export METWORK_PROFILE_LOADED=1
