--- a/tele-watch.sh Thu Apr 26 11:46:36 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#! /bin/bash -e
-# (c) Heiko Schlittermann <hs@schlittermann.de>
-
-ME=$(basename $0)
-WATCHPOINTS=
-
-function abs_path() {
- local a="$1"
- case "$a" in
- /*) echo "$a";;
- *) t="$(cd $t && pwd)";;
- esac
-}
-
-if test "$#" = 0; then
- echo "need at least one directory to watch"
- exit 1
-fi
-
-for watch; do
- w=${watch%:*}
- t=${watch#*:}
-
- test "$w:$t" = "$watch" || {
- echo "to many ':' in \"$watch\"" >&2
- exit 1
- }
-
- w=$(abs_path "$w")
- t=$(abs_path "$t")
-
- if test -f "$w/.target"; then
- read pid target <"$w/.target"
-
- kill -0 $pid 2>/dev/null && {
- echo "already watched by $pid for $target" >&2
- exit 1
- }
- fi
-
- echo "$$ $t" > "$w/.target"
- WATCHPOINTS="${WATCHPOINTS:+$WATCHPOINTS }$w"
-done
-
-inotifywait -q -m --format "%e %w %f" -e create,move,delete $WATCHPOINTS | while read EVENT WATCHER NAME
-do
- echo "$EVENT -- $WATCHER $NAME"
-
- case "$EVENT" in
- *ISDIR*) ;;
- *) continue;;
- esac
-
- read dummy TARGET <$WATCHER/.target
- DIRS=$(cd $TARGET && echo *)
-
- case "$EVENT" in
- *CREATE*)
- for dir in $DIRS; do
- mkdir "/.m/$dir/$NAME"
- echo "$NAME" >"$WATCHER/$NAME/.name"
- ln -s "/.m/$dir/$NAME" "$WATCHER/$NAME/$dir"
- done
- ;;
- *MOVED_TO*)
- name=$(tail -1 "$WATCHER/$NAME/.name")
- for link in "$WATCHER/$NAME/"*; do
- test -L "$link" || continue
- dst=$(readlink $link)
- if test "$(basename $dst)" = "$name"; then
- new="$(dirname $dst)/$NAME"
- mv -v "$dst" "$new"
- ln -vsf "$new" "$link"
- fi
- done
- echo "$NAME" >>"$WATCHER/$NAME/.name"
- ;;
- *DELETE*)
- for dir in $DIRS; do
- mkdir -p "/.m/$dir/,old"
- mv -v "/.m/$dir/$NAME" "/.m/$dir/,old/$NAME-$(date +%Y%m%d-%H%M%S)"
- done
- esac
-done
-exit
-
-=head1 NAME
-
-tele-watch - guard the dtele directory policy
-
-=head1 SYNOPSIS
-
- tele-watch "<dir:target>"...
-
-=head1 DESCRIPTION
-
-B<tele-watch> should run as a daemon.
-
-B<tele-watch> watches the list of directories I<dir>... (absolute path names)
-via "inotify" and performs some actions on:
-
-=over
-
-=item CREATION of new directory
-
-It checks F</.m/*> and assumes, that all directories there should
-reflect in the newly created directory:
-
- <NEW1>/_tmp -> /.m/_tmp/NEW1/
- <NEW1>/homepage -> /.m/homepage/NEW1/
- ...
-
-After done this it writes the name of the newly created directory into
-the file F<< <NEW1>/.name >>
-
-=item RENAMING of a directory
-
-If the directory gets renamed, the above links needs to be updated.
-
-=item DELETION of a directory
-
-If the root directory is removed, the targets of the former links should
-be removed, we do our best, to do this. (Actually not removing the
-targets, but moving them into an F</.m/_tmp/,old> folder.)
-
-=back
-
-=head1 AUTHOR
-
-Heiko Schlittermann <hs@schlittermann.de>
-
-=cut
-
-# vim:tw=72 sts=4 ts=4 sw=4 aw ai sm: