#!/bin/sh -e os="$(cat "${__global}/explorer/os")" case "${os}" in debian|devuan) svdir="/etc/service" ;; *bsd) svdir="/var/service" ;; *) echo "Your OS '${OS}' is currently not supported." >&2 exit 1 ;; esac sv="${__object_id}" state="$(cat "${__object}/parameter/state")" run_file="${svdir}/${sv}/run" source="$(cat "$__object/parameter/source")" if [ "$source" = "-" ]; then source="$__object/stdin" fi # Create this service's directory __directory --state "${state}" "${svdir}/${sv}" export require="__directory${svdir}/${sv}" if [ "${state}" != "present" ]; then # We are done here, the service gets removed exit fi # Setup run file __file --state "${state}" --mode 0550 --source "${source}" \ --onchange "sv restart '${sv}' || true" \ "${run_file}" export require="${require} __file${run_file}" if [ -f "${__object}/parameter/log" ]; then # Setup logger if requested logdir="/var/log/runit" __directory --parents "${svdir}/${sv}/log" __directory --state absent "${svdir}/${sv}/log/main" # Remove lingering old fashioned log __directory --parents "${logdir}/${sv}" export require="${require} __directory${svdir}/${sv}/log __directory${logdir}/${sv}" __file "${svdir}/${sv}/log/run" \ --state "${state}" \ --mode 0755 \ --onchange "sv restart '${sv}/log' || true" \ --source "-" <