aboutsummaryrefslogtreecommitdiff
path: root/local/sbin
diff options
context:
space:
mode:
Diffstat (limited to 'local/sbin')
-rwxr-xr-xlocal/sbin/annoyme-request66
1 files changed, 66 insertions, 0 deletions
diff --git a/local/sbin/annoyme-request b/local/sbin/annoyme-request
new file mode 100755
index 0000000..a14e358
--- /dev/null
+++ b/local/sbin/annoyme-request
@@ -0,0 +1,66 @@
+#!/bin/bash
+# annoyme - script to allow user intervention to otherwise backgrounded process.
+# Copyright (C) 2016 Karel Kočí
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+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."