#!/bin/sh set -eu LIVE_DIR=${LIVE_DIR:-/run/s6-rc} STATE_DIR=${STATE_DIR:-/etc/s6-rc} SOURCE_DIR=${SOURCE_DIR:-/etc/s6-rc/src} new_dir="$STATE_DIR"/"_$(date +%s)" main() { local old old="$(find "$STATE_DIR" -maxdepth 1 -name '_[0-9]*' -print)" # compile new db s6-rc-compile "$new_dir" "$SOURCE_DIR" # switch to new db (if there's an active tree) test -e "$LIVE_DIR" && s6-rc-update -v2 -l "$LIVE_DIR" -b "$new_dir" # swap current db s6-ln -snf "$new_dir" "$STATE_DIR"/compiled # cleanup old db # NOTE: needs to be unquoted for expansion to work rm -rf -- $old } command -v s6-ln >/dev/null 2>&1 || exit 1 main || rm -rf "$new_dir"