#!/bin/sh
# Copyright (C) 2016 O.S. Systems Software LTDA.
# Copyright (C) 2016 Freescale Semiconductor

export PATH="/sbin:/usr/sbin:/bin:/usr/bin"

usage() {
	cat <<EOF
	$0 [<weston options>]
EOF
}

## Module support
modules_dir=@DATADIR@/weston-start

# Add weston extra argument
add_weston_argument() {
	weston_args="$weston_args $1"
}

## Add module to --modules argument
add_weston_module() {
	if [[ "x${weston_modules}" == "x" ]]; then
		weston_modules="--modules "
	fi;
	weston_modules+="${1},"
}

if [ -n "$WAYLAND_DISPLAY" ]; then
	echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet."
	exit 1
fi

if [ -n "$WESTON_USER" ]; then
	if [ -z "$WESTON_GROUP" ]; then
		# no explicit WESTON_GROUP given, therefore use WESTON_USER
		export WESTON_GROUP="${WESTON_USER}"
	fi
fi

weston_args=$*

# Load and run modules
if [ -d "$modules_dir" ]; then
	for m in "$modules_dir"/*; do
		# Skip backup files
		if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then
			continue
		fi

		# process module
		. $m
		if [[ x"{$weston_modules}" != "x" ]]; then
			add_weston_argument "${weston_modules}"
		fi;
	done
fi

if test -z "$XDG_RUNTIME_DIR"; then
	export XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}`
	if ! test -d "$XDG_RUNTIME_DIR"; then
		mkdir --parents $XDG_RUNTIME_DIR
		chmod 0700 $XDG_RUNTIME_DIR
	fi
	if [ -n "$WESTON_USER" ]
	then
		chown $WESTON_USER:$WESTON_GROUP $XDG_RUNTIME_DIR
	fi
fi

su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
