#!/usr/bin/env bash # Copyright 2016 Luke Shumaker # This work is free. You can redistribute it and/or modify it under the # terms of the Do What The Fuck You Want To Public License, Version 2, # as published by Sam Hocevar. See the COPYING file for more details. declare -r workdir=/var/lib/pristine-etc declare -r bindir=/etc/etckeeper/pristine lock() { local fd=$1 local file=$2 eval "exec $fd>"'"$file"' flock "${@:3}" "$fd" } unlock() { local fd=$1 exec {fd}>&- } drain() { if [[ -d /run/systemd/system ]]; then systemctl reset-failed pristine-etc-keeper.service &>/dev/null || true systemctl start pristine-etc-keeper.service else nohup "${bindir}/drain" <&- &> /dev/null & fi } main() { set -e umask 0022 if [[ $# -gt 0 ]]; then lock 8 "${workdir}/spool.lock" printf '%s\n' "$*" >> "${workdir}/spool" unlock 8 fi drain } main "$@"