Browse Source

Add header saving features

Alois Mahdal 8 years ago
parent
commit
55421ba00c

+ 35
- 0
dotfiles/imapdomo/common.lua View File

139
     return false
139
     return false
140
 end
140
 end
141
 
141
 
142
+function save_header(mesg, name)
143
+    --
144
+    -- Append header from *mesg* to file named *name*
145
+    --
146
+    -- File will be placed under directory specified by IMAPDOMO_HEADERS
147
+    -- environment variable.
148
+    --
149
+    local dest = os.getenv("IMAPDOMO_HEADERS") .. '/' .. name
150
+    local cmd = ('cat >>"%q"'):format(dest)
151
+    mbox, uid = table.unpack(mesg)
152
+    header = mbox[uid]:fetch_header()
153
+    if pipe_to(cmd, header) == 0 then
154
+        return true
155
+    else
156
+        return false
157
+    end
158
+end
159
+
160
+function filter_header_saved(seq, name)
161
+    --
162
+    -- Save headers from sequence
163
+    --
164
+    -- Append header of each message in sequence *seq* to file names
165
+    -- *name* and return new sequence with those messages where save was
166
+    -- successful.
167
+    --
168
+    result = Set {}
169
+    for _, mesg in ipairs(seq) do
170
+        if save_header(mesg, name) then
171
+            table.insert(result, mesg)
172
+        end
173
+    end
174
+    return result
175
+end
176
+
142
 function filter_part_like(query, seq)
177
 function filter_part_like(query, seq)
143
     --
178
     --
144
     -- Run MIME part query on *seq* sequence of messages
179
     -- Run MIME part query on *seq* sequence of messages

+ 4
- 0
dotfiles/imapdomo/utils/imapdomo View File

31
     # Compose imapfilter command
31
     # Compose imapfilter command
32
     #
32
     #
33
     echo -n "IMAPDOMO_ACTION=$Action"
33
     echo -n "IMAPDOMO_ACTION=$Action"
34
+    echo -n "  IMAPDOMO_HEADERS=$HeaderDir"
34
     echo -n "  IMAPFILTER_HOME=$CfgDir"
35
     echo -n "  IMAPFILTER_HOME=$CfgDir"
35
     echo -n "  imapfilter"
36
     echo -n "  imapfilter"
36
     if $Debug
37
     if $Debug
48
     local cmd       # imapfilter command
49
     local cmd       # imapfilter command
49
     local CfgDir    # config directory
50
     local CfgDir    # config directory
50
     local LogDir    # directory to store logs
51
     local LogDir    # directory to store logs
52
+    local HeaderDir # directory to store headers by save_header()
51
     local CdTo      # change dir to this before running imapfilter
53
     local CdTo      # change dir to this before running imapfilter
52
     CfgDir="$HOME/.imapdomo"
54
     CfgDir="$HOME/.imapdomo"
53
     LogDir="$HOME/.local/share/imapdomo/logs"
55
     LogDir="$HOME/.local/share/imapdomo/logs"
56
+    HeaderDir="$HOME/.local/share/imapdomo/headers"
54
     Debug=false
57
     Debug=false
55
     #shellcheck disable=SC2034
58
     #shellcheck disable=SC2034
56
     while true; do case $1 in
59
     while true; do case $1 in
68
     then
71
     then
69
         cd "$CdTo" || die
72
         cd "$CdTo" || die
70
     fi
73
     fi
74
+    mkdir -p "$HeaderDir" || die
71
     eval "$cmd"
75
     eval "$cmd"
72
 }
76
 }
73
 
77
 

+ 4
- 0
dotfiles/imapdomo/utils/imapdomo-cron View File

684
     # Compose imapfilter command
684
     # Compose imapfilter command
685
     #
685
     #
686
     echo -n "IMAPDOMO_ACTION=$Action"
686
     echo -n "IMAPDOMO_ACTION=$Action"
687
+    echo -n "  IMAPDOMO_HEADERS=$HeaderDir"
687
     echo -n "  IMAPFILTER_HOME=$CfgDir"
688
     echo -n "  IMAPFILTER_HOME=$CfgDir"
688
     echo -n "  imapfilter"
689
     echo -n "  imapfilter"
689
     if $Debug
690
     if $Debug
701
     local cmd       # imapfilter command
702
     local cmd       # imapfilter command
702
     local CfgDir    # config directory
703
     local CfgDir    # config directory
703
     local LogDir    # directory to store logs
704
     local LogDir    # directory to store logs
705
+    local HeaderDir # directory to store headers by save_header()
704
     local CdTo      # change dir to this before running imapfilter
706
     local CdTo      # change dir to this before running imapfilter
705
     CfgDir="$HOME/.imapdomo"
707
     CfgDir="$HOME/.imapdomo"
706
     LogDir="$HOME/.local/share/imapdomo/logs"
708
     LogDir="$HOME/.local/share/imapdomo/logs"
709
+    HeaderDir="$HOME/.local/share/imapdomo/headers"
707
     Debug=false
710
     Debug=false
708
     #shellcheck disable=SC2034
711
     #shellcheck disable=SC2034
709
     while true; do case $1 in
712
     while true; do case $1 in
721
     then
724
     then
722
         cd "$CdTo" || die
725
         cd "$CdTo" || die
723
     fi
726
     fi
727
+    mkdir -p "$HeaderDir" || die
724
     eval "$cmd"
728
     eval "$cmd"
725
 }
729
 }
726
 
730