#!/bin/sh
#
# %CopyrightBegin%
#
# SPDX-License-Identifier: Apache-2.0
#
# Copyright Ericsson AB 1996-2026. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# %CopyrightEnd%
#
# This program invokes the erlang emulator by calling run_erl.
# It should only be used at an embedded target system.
# It should be modified to give the correct flags to erl (via start_erl),
# e.g -mode embedded -sname XXX
#
# Usage: start [Data]
#

absolute_parent() {
    DIR=$(dirname "${1}");
    (cd "$DIR" && pwd -P || echo "/");
}

find_rootdir() {
    CANDIDATE="${1}";
    while
        CANDIDATE=$(absolute_parent "$CANDIDATE");
        [ "$CANDIDATE" != "/" ] && [ ! -d "$CANDIDATE/erts-17.0" ];
    do :; done;

    if [ "$CANDIDATE" != "/" ]
    then
        # It is likely that the files have been copied or moved
        echo "$CANDIDATE";
    else
        echo "${2}";
    fi
}

if touch /var/log 2>/dev/null;
then
	LOGDIR="/var/log"
else
	if [ -z "$XDG_STATE_HOME" ];
	then
		LOGDIR="$HOME/.local/state/erlang"
	else
		LOGDIR="$XDG_STATE_HOME/erlang"
	fi
	mkdir -p $LOGDIR
fi

if [ -z "$ERL_ROOTDIR" ]
then
    ROOTDIR=$(find_rootdir "$0" "/opt/local/lib/erlang")
else
    ROOTDIR="$ERL_ROOTDIR"
fi

if [ -z "$RELDIR" ]
then
   RELDIR=$ROOTDIR/releases
fi

START_ERL_DATA=${1:-$RELDIR/start_erl.data}

$ROOTDIR/bin/run_erl -daemon /tmp/ $LOGDIR "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA"
