aboutsummaryrefslogtreecommitdiff
path: root/shellrc.d/common
diff options
context:
space:
mode:
authorKarel Kočí <karel.koci@nic.cz>2018-08-02 13:52:42 +0200
committerKarel Kočí <karel.koci@nic.cz>2018-08-02 13:52:42 +0200
commitfe047338d08c73e7fa513777a792d78237107e71 (patch)
treeec6be1d2e6f5ee09c1d91e97a10c4b243ba6f708 /shellrc.d/common
parent8bd8b693baa3d24dc84638c714650c60e2c814d2 (diff)
downloadshellrc-fe047338d08c73e7fa513777a792d78237107e71.tar.gz
shellrc-fe047338d08c73e7fa513777a792d78237107e71.tar.bz2
shellrc-fe047338d08c73e7fa513777a792d78237107e71.zip
Add inotify based inrun and insurf
Diffstat (limited to 'shellrc.d/common')
-rw-r--r--shellrc.d/common24
1 files changed, 24 insertions, 0 deletions
diff --git a/shellrc.d/common b/shellrc.d/common
index 6fbbfc1..8a30f3b 100644
--- a/shellrc.d/common
+++ b/shellrc.d/common
@@ -103,3 +103,27 @@ ssh-clear() {
chroot-bash() {
sudo chroot "$1" /bin/bash
}
+
+# Run command with inotifywait
+# First argument has to be files then -- is expected and everything else
+# is command to be executed when file changes.
+inrun () {
+ (
+ set -e
+ local TMPFS="$(mktemp --tmpdir inrun.XXXXXXXX)"
+ trap "rm '$TMPFS'; trap '' EXIT; exit 0" EXIT INT QUIT TERM ABRT
+ while [ $# -gt 0 -a "$1" != "--" ]; do
+ echo "$1" >> "$TMPFS"
+ shift
+ done
+ if [ $# -le 1 ]; then
+ echo "Usage: inrun FILE.. -- COMMAND"
+ return 1
+ fi
+ shift
+ while true; do
+ inotifywait -qe close_write --fromfile "$TMPFS" || true
+ "$@" || true
+ done
+ )
+}