#!/bin/sh

locald_dir=/etc/local.d
cd "${locald_dir}" || exit 0

svc_dir=/run/systemd/generator
wan_dir=${svc_dir}/multi-user.target.wants
mkdir -p "${svc_dir}" "${wan_dir}" || exit 1

previous=

for f in *.start *.stop; do
	# omit non-existing files ('*.start' when glob doesn't match)
	[ -f "${f}" ] || continue

	case "${f}" in
		*.start)
			is_start=1
			fn=${f%.start}

			# 'env' guarantees shell-like behavior when starting files.
			# Especially that text files without shebangs will be
			# executed via shell.

			start_cmd="/usr/bin/env ${locald_dir}/${f}"
			stop_cmd=/bin/true
			if [ -f "${fn}".stop ]; then
				stop_cmd="/usr/bin/env ${locald_dir}/${fn}.stop"
			fi
			;;
		*.stop)
			is_start=
			fn=${f%.stop}
			start_cmd=/bin/true
			stop_cmd="/usr/bin/env ${locald_dir}/${f}"
			;;
	esac

	# omit .stop files which have matching .start files
	[ -z "${is_start}" -a -e "${fn}.start" ] && continue

	svc_file=gentoo-local-${fn}.service

	echo "[Unit]
Description=Service for local.d/${fn}.*
After=multi-user.target graphical.target ${previous}
ConditionFileIsExecutable=${locald_dir}/${f}

[Service]
Type=forking
RemainAfterExit=on
TimeoutSec=0
ExecStart=${start_cmd}
ExecStop=${stop_cmd}" > "${svc_dir}/${svc_file}"

	ln -s "../${svc_file}" "${wan_dir}/${svc_file}"

	previous=${svc_file}
done
