#!/bin/sh
#
# $Log: create_service,v $
# Revision 1.6  2024-04-22 07:58:43+05:30  Cprogrammer
# add function to create notify-desktop service
#
# Revision 1.5  2023-06-23 13:02:15+05:30  Cprogrammer
# added startup/shutdown message
#
# Revision 1.4  2023-06-23 12:29:55+05:30  Cprogrammer
# added SAVE_CPU env variable
#
# Revision 1.3  2023-06-23 00:24:45+05:30  Cprogrammer
# fixed /service/lcd-daemon/variables/.options
#
# Revision 1.2  2023-06-22 23:39:06+05:30  Cprogrammer
# refactore create_service
#
# Revision 1.1  2014-09-02 22:08:00+05:30  Cprogrammer
# Initial revision
#
#
# $Id: create_service,v 1.6 2024-04-22 07:58:43+05:30 Cprogrammer Exp mbhangui $
#
prefix=/usr
LOGDIR=/var/log/svc

create_lcd_daemon_service()
{
	/bin/mkdir -p "$DESTDIR"$servicedir/lcd-daemon/log
	if [ $? -ne 0 ] ; then
		echo "mkdir "$DESTDIR"$servicedir/lcd-daemon/log failed" 1>&2
		exit 1
	fi
	conf_dir="$DESTDIR"$servicedir/lcd-daemon/variables
	/bin/mkdir -p $conf_dir
	if [ $? -ne 0 ] ; then
		echo "mkdir $conf_dir failed" 1>&2
		exit 1
	fi
	# lcd-daemon log script
	(
	echo "#!/bin/sh"
	echo "#"
	echo "# \$Id: create_service,v 1.6 2024-04-22 07:58:43+05:30 Cprogrammer Exp mbhangui $"
	echo ""
	echo "exec $prefix/bin/setuidgid qmaill \\"
	echo "  $prefix/sbin/multilog t $LOGDIR/lcd-daemon"
	) > "$DESTDIR"$servicedir/lcd-daemon/log/run
	/bin/chmod +x "$DESTDIR"$servicedir/lcd-daemon/log/run

	if [ -d /run ] ; then
		echo "/run/lcd-daemon/lcdfifo" > $conf_dir/LCDFIFO
	elif [ -d /var/run ] ; then
		echo "/var/run/lcd-daemon/lcdfifo" > $conf_dir/LCDFIFO
	else
		echo "/tmp/lcd-daemon/lcdfifo" > $conf_dir/LCDFIFO
	fi
	echo 200  > $conf_dir/SCROLL_DELAY
	echo 0666 > $conf_dir/FIFO_MODE
	echo 4    > $conf_dir/BIT_MODE
	echo 20   > $conf_dir/LCD_WIDTH
	echo 4    > $conf_dir/LCD_ROWS
	echo 1    > $conf_dir/SAVE_CPU
	echo "/usr/libexec/lcd-daemon/create_service --servicedir=$servicedir --lcd-daemon" > $conf_dir/.options
	(
	echo "#!/bin/sh"
	echo "#"
	echo "# \$Id: create_service,v 1.6 2024-04-22 07:58:43+05:30 Cprogrammer Exp mbhangui $"
	echo "#"
	echo
	echo
	echo "exec ${prefix}/bin/envdir ${servicedir}/lcd-daemon/variables \\"
	echo "  ${prefix}/sbin/lcd-daemon -i \"Display Initialized\" -s \"Display Turned Off\" 2>&1"
	) > "$DESTDIR"$servicedir/lcd-daemon/run
	/bin/chmod +x "$DESTDIR"$servicedir/lcd-daemon/run

	if [ ! -d $LOGDIR/lcd-daemon ] ; then
		/bin/mkdir -p $LOGDIR/lcd-daemon
		$chown qmaill:nofiles $LOGDIR/lcd-daemon
	fi
}

create_notify_desktop_service()
{
	/bin/mkdir -p "$DESTDIR"$servicedir/notify-desktop/log
	if [ $? -ne 0 ] ; then
		echo "mkdir "$DESTDIR"$servicedir/notify-desktop/log failed" 1>&2
		exit 1
	fi
	conf_dir="$DESTDIR"$servicedir/notify-desktop/variables
	/bin/mkdir -p $conf_dir
	if [ $? -ne 0 ] ; then
		echo "mkdir $conf_dir failed" 1>&2
		exit 1
	fi
	# notify-desktop log script
	(
	echo "#!/bin/sh"
	echo "#"
	echo "# \$Id: create_service,v 1.6 2024-04-22 07:58:43+05:30 Cprogrammer Exp mbhangui $"
	echo ""
	echo "exec $prefix/bin/setuidgid qmaill \\"
	echo "  $prefix/sbin/multilog t $LOGDIR/notify-desktop"
	) > "$DESTDIR"$servicedir/notify-desktop/log/run
	/bin/chmod +x "$DESTDIR"$servicedir/notify-desktop/log/run

	if [ -d /run ] ; then
		echo "/run/notify-desktop/notify-fifo" > $conf_dir/NOTIFYFIFO
	elif [ -d /var/run ] ; then
		echo "/var/run/notify-desktop/notify-fifo" > $conf_dir/NOTIFYFIFO
	else
		echo "/tmp/notify-desktop/notify-fifo" > $conf_dir/NOTIFYFIFO
	fi
	echo 0666 > $conf_dir/FIFO_MODE
	echo ":0" > $conf_dir/DISPLAY
	id="$(id -u pi)"
	if [ -n "$id" ] ; then
		echo "/run/user/$id"  > $conf_dir/XDG_RUNTIME_DIR
	else
		echo "/run/user/1000" > $conf_dir/XDG_RUNTIME_DIR
	fi
	echo "/usr/libexec/lcd-daemon/create_service --servicedir=$servicedir --notify-desktop" > $conf_dir/.options
	(
	echo "#!/bin/sh"
	echo "#"
	echo "# \$Id: create_service,v 1.6 2024-04-22 07:58:43+05:30 Cprogrammer Exp mbhangui $"
	echo "#"
	echo
	echo
	echo "exec ${prefix}/bin/envdir ${servicedir}/notify-desktop/variables \\"
	echo "  ${prefix}/sbin/notify-daemon -i \"Display Initialized\" -s \"Display Turned Off\" 2>&1"
	) > "$DESTDIR"$servicedir/notify-desktop/run
	/bin/chmod +x "$DESTDIR"$servicedir/notify-desktop/run

	if [ ! -d $LOGDIR/notify-desktop ] ; then
		/bin/mkdir -p $LOGDIR/notify-desktop
		$chown qmaill:nofiles $LOGDIR/notify-desktop
	fi
}

usage()
{
prog_args=""
if [ -f /usr/bin/less ] ; then
	MORE=/usr/bin/less
else
	MORE=/usr/bin/more
fi
echo "Press ENTER for options, Cntrl C to quit" 1>&2
read key
$MORE <<EOF
Usage: create_service [OPTION]
EOF
exit $1
}

################################# Main ##################################
if [ -x /bin/chown ] ; then
	chown=/bin/chown
elif [ -x /usr/sbin/chown ] ; then
	chown=/usr/sbin/chown
elif [ -x /usr/bin/chown ] ; then
	chown=/usr/bin/chown
else
	chown=/bin/chown
fi
prog_args="$0 $*"
while test $# -gt 0; do
    case "$1" in
    	-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
		;;
    	*) optarg=
		;;
    esac

    case "$1" in
    --user=*)
	user=$optarg
	;;

	--destdir=*)
	DESTDIR=$optarg
	;;

    --servicedir=*)
	servicedir=$optarg
	;;

	--lcd-daemon)
	option=1
	;;

	--notify-desktop)
	option=2
	;;

	esac
	shift
done
if [ -z "$servicedir" ] ; then
	echo "servicedir not provided" 1>&2
	exit 1
fi
case $option in
	1)
	create_lcd_daemon_service
	;;
	2)
	create_notify_desktop_service
	;;
esac
