From b176b61b52f696562d2acce6342111be9d7e196c Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 21 Sep 2020 09:44:20 +0200 Subject: [PATCH] mail: Move rollup data to XDG data dir Moved the file containing sender addresses to filter to the XDG_DATA_HOME directory (usually `~/.local/share/imapfilter/`) where it will look for a `rollup.txt` file. This is to separate the configuration values (the filters themselves) somewhat from the data they act on (values to filter and searches to accomplish). --- .../imapfilter/filters/rollup-dump.lua | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/mail/.config/imapfilter/filters/rollup-dump.lua b/mail/.config/imapfilter/filters/rollup-dump.lua index cef898d..4ebefe9 100644 --- a/mail/.config/imapfilter/filters/rollup-dump.lua +++ b/mail/.config/imapfilter/filters/rollup-dump.lua @@ -1,21 +1,37 @@ function sendToFolder(folderFrom, folderTo, senders) + local messages = folderFrom:select_all() for _, sender in pairs(senders) do - messages = folderFrom:contain_from(sender) - messages:mark_seen() - messages:move_messages(folderTo) + local filtered=messages:contain_from(sender) + filtered:mark_seen() + filtered:move_messages(folderTo) end end -function getSenderList(file) +-- will set filters to be grabbed from XDG-compliant filter directory +-- can be overridden with env var IMAPFILTER_ROLLUPFILE +function getRollupFile(fname) + local f + local fname=fname or "rollup.txt" + if os.getenv("IMAPFILTER_ROLLUPFILE") then + f=os.getenv("IMAPFILTER_ROLLUPFILE") + elseif os.getenv("XDG_DATA_HOME") then + f=os.getenv("XDG_DATA_HOME") .. "/imapfilter/" .. fname + else + f=os.getenv("HOME") .. "/.local/share/imapfilter/" .. fname + end + return f +end + +function getSenderList(rollupfile) local rollupSenders={} - local file = io.open(file) + local file = io.open(rollupfile) if file then for line in file:lines() do table.insert(rollupSenders, line) end else - print("ERROR: rollup did not find rollup.txt file containing mail addresses.") + print("ERROR: rollup did not find rollup.txt file containing mail addresses at " .. rollupfile or "" ) end return rollupSenders end @@ -23,5 +39,5 @@ end sendToFolder ( accounts.gmail["Inbox"], accounts.gmail["Dump"], - getSenderList(getConfigDir() .. "/rollup.txt") + getSenderList(getRollupFile()) )