aboutsummaryrefslogtreecommitdiff
path: root/local/sbin/annoyme-request
diff options
context:
space:
mode:
Diffstat (limited to 'local/sbin/annoyme-request')
-rwxr-xr-xlocal/sbin/annoyme-request50
1 files changed, 50 insertions, 0 deletions
diff --git a/local/sbin/annoyme-request b/local/sbin/annoyme-request
new file mode 100755
index 0000000..28a9864
--- /dev/null
+++ b/local/sbin/annoyme-request
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+DOT_ANNOYME=~/.annoyme
+
+NAME=$1
+EC=2
+
+onexit() {
+ rm -f "$DOT_ANNOYME/$NAME.script"
+ rm -f "$DOT_ANNOYME/$NAME.pid"
+ rm -f "$DOT_ANNOYME/$NAME.desc"
+ rm -f "$DOT_ANNOYME/$NAME.out"
+ kill $SLEEPID 2>/dev/null
+ exit $EC
+}
+trap onexit EXIT INT QUIT TERM ABRT
+
+mkdir -p $DOT_ANNOYME
+
+echo "#!/bin/bash" > "$DOT_ANNOYME/$NAME.script"
+while read -r LINE; do
+ echo "$LINE" >> "$DOT_ANNOYME/$NAME.script"
+done
+chmod +x "$DOT_ANNOYME/$NAME.script"
+echo "$$" > "$DOT_ANNOYME/$NAME.pid"
+echo "$2" > "$DOT_ANNOYME/$NAME.desc"
+
+onsuccess() {
+ echo "User intervention successful." 1>&2
+ cat "$DOT_ANNOYME/$NAME.out"
+ EC=0
+ exit
+}
+
+onfailure() {
+ echo "User intervention failed." 1>&2
+ EC=1
+ exit
+}
+
+trap onsuccess SIGUSR1
+trap onfailure SIGUSR2
+
+echo "Waiting for user intervention using annoyme" 1>&2
+notify-send -a "$NAME" "$NAME: User intervention required" "$2"
+sleep 3h &
+SLEEPID=$!
+wait $SLEEPID
+echo "User intervention timed out." 1>&2
+notify-send -a "$NAME" "$NAME: User intervention request timed out."