#!/bin/sh
# Copyright (c) 2008-2020 Robert Virding
#
# 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.

follow_symlink () {
    if [ -h "$1" ]; then
        follow_symlink "$(readlink "$1")"
    else
        echo "$1"
    fi
}

SELF=$(follow_symlink "$0")
LFE_PROGNAME=$(echo "$0" | sed 's/.*\///')
LFE_BINDIR=$(dirname "$SELF")
LFE_ROOTDIR=$(dirname "$LFE_BINDIR")

export LFE_ROOTDIR
export LFE_BINDIR
export LFE_PROGNAME

# Collect all +flags and -flags. We follow the same handling as in
# 'erl' EXCEPT that as soon as we reach a "plain" argument all the
# rest also become "plain" arguments and will be prefixed with -extra.
# These arguments are then handed over as is the LFE boot to do as it
# pleases.

flags=""

while [ -n "$1" ]; do
    case "$1" in
	-extra | --)		# We're explicitly done
	    shift
	    break ;;
	-* | +*)		# Flags
	    flags="$flags $1"
	    shift
	    while [ -n "$1" ]; do
		case "$1" in
		    -* | +*)
			break ;;
		    *)
			flags="$flags $1"
		esac
		shift
	    done ;;
	*)			# Plain argument
	    break ;;
    esac
done

lflags="-pa $LFE_ROOTDIR/ebin"	# Location of LFE files
if [ -n "$1" ]; then
    lflags="-noshell $lflags"	# To avoid getting a shell process
fi

echo "$flags" "$lflags" -user lfe_init -extra "$@"
