home · contact · privacy
Initial add of files of current work state.
[pingmail.git] / pingmail
1 #!/bin/sh
2
3 set -e
4
5 # read in dotfile
6 pingmailrc=$HOME'/.pingmailrc'
7 if [ ! -f $pingmailrc ]; then
8     echo 'No .pingmailrc found at '$pingmailrc', aborting.'
9     exit
10 fi
11 . $HOME'/.pingmailrc'
12 mkdir -p $testdir
13
14 # interpret arguments
15 if [ "$1" = "check" ]; then
16     continue
17 elif [ "$1" = "touch" ]; then
18     touch $ping_touch
19     exit
20 else
21     echo 'usage: '$0' COMMAND\n(COMMAND one of "check", "touch")'
22     exit
23 fi
24
25 # check test file for last modtime 
26 modtime_pingfile=0
27 if [ -f $ping_touch ]; then
28     modtime_pingfile=`stat $ping_touch --format=%Y`
29 fi
30
31 # search maildir for last life sign datetime
32 modtime_mails=0
33 while read file; do
34     if [ -z $file ]; then
35         break
36     fi
37     modtime=`stat $file --format=%Y`
38     if [ "$modtime" -gt "$modtime_mails" ]; then
39         modtime_mails=$modtime
40     fi
41 done <<EOF
42 $(grep -lER "$matchstring" $maildir)
43 EOF
44
45 # find delta of last life sign datetime / test file modtime and current datetime
46 now=`date +%s`
47 modtime=0
48 if [ "$modtime_mails" -gt "$modtime_pingfile" ]; then
49     echo "The most recent life sign is in the mails."
50     modtime=$modtime_mails
51 else
52     echo "Ping wait file was updated more recently than last life sign from the mails."
53     modtime=$modtime_pingfile
54 fi
55 delta=`expr $now - $modtime`
56 echo "Wait time since last life sign or ping sent: "$delta" seconds:"
57
58 # if delta > wait time, send reminder to person to check with, start reminder
59 # mail timer if not in existence, re-touch ping wait file
60 if [ "$delta" -gt "$wait_time" ]; then
61     echo $msg2checked | mutt -s "$subj2checked" $checked_address
62     echo "Sending ping message."
63     touch $ping_touch
64     if [ ! -f "$reminder_touch" ]; then
65         touch $reminder_touch
66         echo "Creating reminder message wait time file."
67     fi
68 fi
69
70 # if last life sign datetime / test file modtime > modtime of reminder touch
71 # file, delete it; otherwise, if delta between those > wait time, send reminder
72 # to person checking and then delete reminder touch file 
73 if [ -f "$reminder_touch" ]; then
74     modtime_reminder=`stat $reminder_touch --format=%Y`
75     if [ "$modtime" -gt "$modtime_reminder" ]; then
76         rm $reminder_touch
77         echo "Deleting reminder message wait time file."
78     else
79         delta=`expr $now - $modtime_reminder`
80         if [ "$delta" -gt "$wait_time" ]; then
81             echo $msg2checker | mutt -s "$subj2checker" $checker_address
82             echo "Sending reminder message."
83             rm $reminder_touch
84             echo "Deleting reminder message wait time file."
85         fi
86     fi
87 fi