-
Notifications
You must be signed in to change notification settings - Fork 0
/
insorgmail
executable file
·83 lines (73 loc) · 2.08 KB
/
insorgmail
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash
set -e
ID="WIXXXXX"
SOFTWARE="insorgmail"
ORGDIR="$HOME/org"
ORGEMAIL="$ORGDIR/email.org"
ORGDATABASE="$ORGDIR/data"
UUID="`uuidgen`"
UUIDFRONT="`echo $UUID | sed -e 's/^\(..\).*$/\1/'`"
UUIDREST="`echo $UUID | sed -e 's/^..\(.*\)$/\1/'`"
ORGDATADIR="$ORGDATABASE/$UUIDFRONT/$UUIDREST"
TMPDIR=`mktemp -d --tmpdir "${SOFTWARE}.XXXXXXXXXXXXX"`
trap 'rm -r $TMPDIR' 0
FINPUT="$TMPDIR/input"
FOUTPUT="$TMPDIR/output"
MAILPARTS="$TMPDIR/mailparts"
mkdir "$MAILPARTS"
cat > "$FINPUT"
gethdr () {
cat "$FINPUT" | formail -zcx "$1:" | sed -e 's/^ //' | dos2unix
}
SUBJECT="`gethdr Subject`"
DATE="`gethdr Date`"
FROM="`gethdr From`"
ripmime --paranoid --name-by-type -i - -d "$MAILPARTS" < "$FINPUT"
find "$MAILPARTS" -name 'multipart*' -exec rm {} +
writeout_attachproc () {
find . -type f \( -not -name 'text-html*' \) \( -not -name 'text-plain*' \) -print0 |
while IFS= read -r -d '' file; do
mkdir -p "$ORGDATADIR"
cp "$file" "$ORGDATADIR"
echo -n " `echo "$file" | sed -e 's/ /%20/g' -e 's,^\./,,'`"
done
}
writeout () {
cd "$MAILPARTS"
ATTACHLIST="`writeout_attachproc`"
if [ -n "$ATTACHLIST" ]; then
echo "* TODO Email: ${SUBJECT} :ATTACH:"
else
echo "* TODO Email: ${SUBJECT}"
fi
echo " :PROPERTIES:"
echo " :ID: ${UUID}"
if [ -n "$ATTACHLIST" ]; then
echo " :Attachments:$ATTACHLIST"
fi
echo " :END:"
echo " Date: $DATE"
echo " From: $FROM"
echo ""
cd "$MAILPARTS"
for FILE in text-plain*; do
if [ -e "$FILE" ]; then
echo "** $FILE"
echo " #+BEGIN_EXAMPLE"
cat "$FILE" | sed 's/^/ /'
echo " #+END_EXAMPLE"
fi
done
for FILE in text-html*; do
if [ -e "$FILE" ]; then
echo "** $FILE"
pandoc -f html-raw_html-native_divs -t org -i "$FILE" | sed 's/^/ /'
fi
done
}
writeout > "$FOUTPUT"
cat "$FOUTPUT" >> $ORGEMAIL
cd "$ORGDIR"
git add "$ORGEMAIL"
git add "data/$UUIDFRONT/$UUIDREST" || true
git commit -m 'Added files from insorgmail'