# We load the "non interactive" profile
. {{MFMODULE_HOME}}/share/profile

{% if MFMODULE != "MFADMIN" %}
MFADMIN_HOSTNAME=$(env |grep "^{{MFMODULE}}_ADMIN_HOSTNAME=" |awk -F '=' '{print $2;}')
MFADMIN_HOSTNAME_IP=$(env |grep "^{{MFMODULE}}_ADMIN_HOSTNAME_IP=" |awk -F '=' '{print $2;}')
{% endif %}

function __prompt_without_x_mode() {
    PLUGIN_NAME={% raw %}${{% endraw %}{{MFMODULE}}_CURRENT_PLUGIN_NAME{% raw %}}{% endraw %}
    if test "${PLUGIN_NAME}" != ""; then
        if test "{{MFMODULE_LOWERCASE}}" != "`whoami`"; then
            export LP_PS1_PREFIX="${LP_MARK_BATTERY}{{MFMODULE}}, plugin_env: ${PLUGIN_NAME}${LP_MARK_BATTERY}"
        else
            export LP_PS1_PREFIX="${LP_MARK_BATTERY}plugin_env: ${PLUGIN_NAME}${LP_MARK_BATTERY}"
        fi
    elif test "${VIRTUAL_ENV:-}" != ""; then
        local VENV_NAME=$(basename "${VIRTUAL_ENV}")
        if test "{{MFMODULE_LOWERCASE}}" != "`whoami`"; then
            export LP_PS1_PREFIX="${LP_MARK_BATTERY}{{MFMODULE}}, venv: ${VENV_NAME}${LP_MARK_BATTERY}"
        else
            export LP_PS1_PREFIX="${LP_MARK_BATTERY}venv: ${VENV_NAME}${LP_MARK_BATTERY}"
        fi
        local PYTHON_MODE=${METWORK_PYTHON_MODE:-3}
        local N=$(is_layer_loaded python${PYTHON_MODE}@mfext 2>/dev/null)
        if test "${N}" != "0"; then
            layer_unload python${PYTHON_MODE}_core@mfext >/dev/null 2>&1
            layer_load python${PYTHON_MODE}_core@mfext >/dev/null 2>&1
            PATH=$(_field_prepend "${PATH}" "${VIRTUAL_ENV}/bin")
            export PATH
            unset PYTHONPATH
        fi
    else
        if test "{{MFMODULE_LOWERCASE}}" != "`whoami`"; then
            export LP_PS1_PREFIX="${LP_MARK_BATTERY}{{MFMODULE}}${LP_MARK_BATTERY}"
        fi
    fi
    unset PLUGIN_NAME
    local X_MODE=`echo $- |grep -c 'x'`
    if test ${X_MODE} -gt 0; then
        # we temporary remove the -x mode before loading
        # the prompt
        set +x
    fi
    _lp_set_prompt
    if test ${X_MODE} -gt 0; then
        set -x
    fi
}

{% if MFMODULE == "MFBASE" or MFMODULE == "MFSERV" or MFMODULE == "MFDATA" %}
function __get_plugin_env_profile_tmp_file() {
    TMPPROFILE="${MFMODULE_RUNTIME_HOME}/tmp/$(get_unique_hexa_identifier).profile"
    touch "${TMPPROFILE}"
    for VAR in LAYERAPI2_LAYERS_PATH HOME TERM DISPLAY COLORTERM HOSTNAME LANG LOGNAME USER USERNAME XAUTHORITY MFMODULE_RUNTIME_HOME MFMODULE_RUNTIME_SUFFIX PIP_PREFIX; do
        local N=$(env |grep "^${VAR}=..*$" |wc -l)
        if test "${N}" -gt 0; then
           local VAL=$(printenv "${VAR}")
           echo "export ${VAR}=\"${VAL}\"" >>"${TMPPROFILE}"
        fi
    done
    plugin_wrapper --cwd --bash-cmds "$1" NOTUSED >>"${TMPPROFILE}"
    echo "${TMPPROFILE}"
}
function plugin_env() {
    local PLUGIN=$1
    if test "${PLUGIN}" = ""; then
        if test -f .layerapi2_label; then
            N=$(cat .layerapi2_label 2>/dev/null |grep "^plugin_" |wc -l)
            if test ${N} -gt 0; then
                # we are inside a plugin dir
                export PIP_PREFIX="$(pwd)/local"
                _OLD_LAYERAPI2_LAYERS_PATH="${LAYERAPI2_LAYERS_PATH}"
                field_prepend LAYERAPI2_LAYERS_PATH "$(pwd)"
                TMPPROFILE=$(__get_plugin_env_profile_tmp_file "$(pwd)")
                env -i bash --rcfile "${TMPPROFILE}"
                rm -f "${TMPPROFILE}"
                export LAYERAPI2_LAYERS_PATH="${_OLD_LAYERAPI2_LAYERS_PATH}"
                unset PIP_PREFIX
                unset _OLD_LAYERAPI2_LAYERS_PATH
                return
            fi
        fi
        echo "usage: plugin_env PLUGIN_NAME or plugin_env (inside a plugin dir)"
        return 1
    fi
    N=$(is_layer_installed "plugin_${PLUGIN}@${MFMODULE_LOWERCASE}")
    if test "${N}" = "0"; then
        echo "Error: layer: plugin_${PLUGIN}@${MFMODULE_LOWERCASE} is not available"
        echo
        echo "Maybe the plugin: ${PLUGIN} is not installed ?"
        echo
        echo "Install it first or use 'plugin_env' without arguments inside the plugin directory"
        return
    fi
    local PLUGIN_HOME=$(plugins.info "${PLUGIN}" |grep "^Installation home:" |awk -F ': ' '{print $2;}')
    export PIP_PREFIX="${PLUGIN_HOME}/local"
    TMPPROFILE=$(__get_plugin_env_profile_tmp_file "${PLUGIN}")
    env -i bash --rcfile "${TMPPROFILE}"
    rm -f "${TMPPROFILE}"
    unset PIP_PREFIX
}
{% endif %}

# Prompt
if test "${LIQUIDPROMPT}" != "0"; then
    if test -f {{MFEXT_HOME}}/opt/core/share/liquidprompt/liquidprompt; then
        # We load liquidprompt as a prompt
        export LP_ENABLE_TEMP=0
        export LP_ENABLE_PERM=0
        export LP_ENABLE_LOAD=0
        export LP_ENABLE_BATT=0
        export LP_ENABLE_FOSSIL=0
        export LP_ENABLE_HG=0
        export LP_ENABLE_BZR=0
        export LP_ENABLE_RUNTIME=0
        export LP_ENABLE_VIRTUALENV=0
        PLUGIN_NAME=$(env |grep "^${MFMODULE}_CURRENT_PLUGIN_NAME" |awk -F '=' '{print $2;}')
        . {{MFEXT_HOME}}/opt/core/share/liquidprompt/liquidprompt >/dev/null 2>&1
        PROMPT_COMMAND=__prompt_without_x_mode
        unset PLUGIN_NAME
    fi
fi

CLEAR=`which_or_empty clear.sh`
if test "${CLEAR}" != ""; then
    alias clear="${CLEAR}"
fi
LAUNCH_CRONTAB=`which_or_empty _launch_crontab`
if test "${LAUNCH_CRONTAB}" != ""; then
    alias crontab="${LAUNCH_CRONTAB}"
fi
alias debug="metwork_debug"
alias pip="${MFEXT_HOME}/bin/pip_wrapper"

{% if MFMODULE != "MFEXT" %}
alias circusctl="_circusctl --endpoint {% raw %}${{% endraw %}{{MFMODULE}}{% raw %}_CIRCUS_ENDPOINT}{% endraw %} --timeout=10"
{% endif %}

if test "${PROFILE_ERROR}" = "1"; then
    exit 1
fi

if test "${NOCLEAR}" != "1"; then
    clear
fi
cat <<EOF
           __  __      ___          __        _
          |  \/  |    | \ \        / /       | |
          | \  / | ___| |\ \  /\  / /__  _ __| | __
          | |\/| |/ _ \ __\ \/  \/ / _ \| '__| |/ /
          | |  | |  __/ |_ \  /\  / (_) | |  |   <
          |_|  |_|\___|\__| \/  \/ \___/|_|  |_|\_\\


EOF

if test "$(which_or_empty echo_bold)" != ""; then
    {% if MFMODULE != "MFEXT" %}
    echo_bold "Welcome on ${MFHOSTNAME} (${MFHOSTNAME_FULL}, ${MFHOSTNAME_FULL_IP})"
    {% endif %}
    if test "${MFCONFIG:-}" != "GENERIC"; then
        echo "(module: ${MFMODULE}, config: ${MFCONFIG}, version: ${MFMODULE_VERSION})"
    else
        echo "(module: ${MFMODULE}, version: ${MFMODULE_VERSION})"
    fi
    echo
fi

uptime

echo

{% if MFMODULE != "MFADMIN" %}
if test "$(which_or_empty echo_bold)" != ""; then
    if test "${MFADMIN_HOSTNAME}" != "null" -a "${MFADMIN_HOSTNAME}" != ""; then
        if test "${MFEXT_LAYER_MONITORING_LOADED:-}" != "1"; then
            echo_bold "WARNING: the [admin]/hostname value is configured for this module"
            echo_bold "         but the monitoring@mfext layer is not installed"
            echo_bold "         => you should consider installing it"
            echo
            echo "(hint: use 'yum install metwork-mfext-layer-monitoring'"
            echo "       as root to do that (or something similar adapted to your Linux"
            echo "       distribution)"
        else
            echo_bold "Sending metrics and logs to mfadmin module: (${MFADMIN_HOSTNAME}, ${MFADMIN_HOSTNAME_IP})"
        fi
        echo
    fi
fi
unset MFADMIN_HOSTNAME
unset MFADMIN_HOSTNAME_IP
{% endif %}

{% block custom %}
{% endblock %}

# see https://github.com/metwork-framework/mfext/issues/544
# => can help to ignore some processes in list_metwork_processes.py output
export METWORK_LIST_PROCESSES_FORCE=0
