summaryrefslogtreecommitdiff
path: root/fill
diff options
context:
space:
mode:
Diffstat (limited to 'fill')
-rwxr-xr-xfill44
1 files changed, 44 insertions, 0 deletions
diff --git a/fill b/fill
new file mode 100755
index 0000000..a4704e1
--- /dev/null
+++ b/fill
@@ -0,0 +1,44 @@
+#!/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 "$@"