diff options
author | metamuffin <metamuffin@disroot.org> | 2024-10-31 01:25:53 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-10-31 01:25:53 +0100 |
commit | 2eb6754ca4d130e6bf29944646e61345c6e2de7a (patch) | |
tree | 2c5a69a5d116cd5a2e6f801f29b0eeff20219679 /collapse_log.lua | |
parent | efd2e6c80ebf20fbc4a24929c00693e804af2a43 (diff) | |
download | abrechenbarkeit-2eb6754ca4d130e6bf29944646e61345c6e2de7a.tar abrechenbarkeit-2eb6754ca4d130e6bf29944646e61345c6e2de7a.tar.bz2 abrechenbarkeit-2eb6754ca4d130e6bf29944646e61345c6e2de7a.tar.zst |
collapse log script
Diffstat (limited to 'collapse_log.lua')
-rw-r--r-- | collapse_log.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/collapse_log.lua b/collapse_log.lua new file mode 100644 index 0000000..cfba345 --- /dev/null +++ b/collapse_log.lua @@ -0,0 +1,34 @@ + +local function read_log() + local log = io.open("log", "r") + if log == nil then + return function() return nil end + end + local lines = log:lines("l") + return function() + local l = lines() + if l == "" or l == nil then + return nil + end + local time, username, amount, comment = string.match(l, "(%d+),([%w_ -]+),(-?%d+),([%w_ -]*)") + return tonumber(time), username, tonumber(amount), comment + end +end + + +local function balances() + local users = {} + for _, username, amount, _ in read_log() do + users[username] = (users[username] or 0) + amount + end + return users +end + +local newlog = io.open("log_collapsed","w+") +if newlog == nil then + return print("error failed to open log") +end +for username, amount in pairs(balances()) do + newlog:write(string.format("%d,%s,%d,%s\n", os.time(), username, amount, "Collapsed transaction history")) +end +newlog:close() |