registrar

Files related to my duties as Registrar of Agora Nomic
git clone git://juanmeleiro.mat.br/registrar
Log | Files | Refs | README

birthday.lua (1707B)


      1 require "lib.utils"
      2 pprint = require "pprint"
      3 
      4 local fns = {
      5 	tmp = ".tmp"
      6 }
      7 
      8 function announce(args, date, original)
      9 	local time = {
     10 		year = tonumber(string.sub(date, 1, 4)),
     11 		month = tonumber(string.sub(date, 6, 7)),
     12 		day = tonumber(string.sub(date, 9, 10))
     13 	}
     14 	local monthname = os.date("%B", os.time(time))
     15 	local dayord = ord(time.day)
     16 	local count = tostring(time.year - tonumber(string.sub(original, 1, 4)))
     17 	local countord = ord(count)
     18 	local day = tostring(time.day)
     19 	local datestring = string.format("The %s%s of %s of %d", day, dayord, monthname, time.year)
     20 	local datepad = (string.rep(" ", (80 - string.len(datestring))//2))
     21 
     22 	defs = {
     23 		MAILDATE = os.date("%a, %d %b %Y %T %z"),
     24 		DATE = datepad .. datestring,
     25 		PLAYER = args.name,
     26 		COUNT = count .. countord
     27 	}
     28 
     29 	os.execute(string.format("m4 %s templates/birthday.m4 > %s", m4flags(defs), fns.tmp))
     30 	if args.p then
     31 		os.execute(string.format("cat %s", fns.tmp))
     32 	else
     33 		os.execute(string.format("neomutt -H %s -E", fns.tmp))
     34 	end
     35 	os.remove(fns.tmp)
     36 end
     37 
     38 function birthday(args, players, log)
     39 	if not (players[args.name]) then
     40 		die("No such player.")
     41 	end
     42 
     43 	local original = "xxxx-xx-xx"
     44 	if players[args.name].birthday then
     45 		original = players[args.name].birthday
     46 	else
     47 		for _,e in ipairs(players[args.name].history) do
     48 			original = math.min(original, e.registration)
     49 		end
     50 	end
     51 
     52 	local this_birthday = os.date("%Y") .. "-" .. string.sub(original, 6)
     53 	local prev_birthday = tostring(tonumber(os.date("%Y")) - 1) .. "-" .. string.sub(original, 6)
     54 	local today = os.date("%Y-%m-%d")
     55 
     56 	if (this_birthday <= today) then
     57 		announce(args, this_birthday, original)
     58 	else
     59 		announce(args, prev_birthday, original)
     60 	end
     61 end
     62 
     63 return birthday