registrar

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

writ.lua (1788B)


      1 require "lib.utils"
      2 
      3 local fns = {
      4 	tmp = ".tmp"
      5 }
      6 
      7 function cantus(args, players, log)
      8 	if not (players[args.who]) then
      9 		die("No such player.")
     10 	end
     11 
     12 	h = table.query(p.history, function (c) return c.active end)
     13 
     14 	if not h then
     15 		die(string.format("Player '%s' is not active.", args.name))
     16 	end
     17 
     18 	local monthname = os.date("%B", args.when)
     19 	local dayord = ord(tonumber(os.date("%d", args.when)))
     20 	local day = os.date("%d", args.when)
     21 	local datestring = string.format("The %s%s of %s of %d", day, dayord, monthname, os.date("%Y", args.when))
     22 	local datepad = (string.rep(" ", (80 - string.len(datestring))//2))
     23 	local namepad = (string.rep(" ", (80 - string.len(args.who))//2))
     24 
     25 	local defs = {
     26 		MAILDATE = os.date("%a, %d %b %Y %T %z"),
     27 		NAME = namepad .. args.who,
     28 		DATE = datepad .. datestring,
     29 		FILEPATH = args.cantus,
     30 		FULLTEXT = string.format("include(%s)", FILEPATH)
     31 	}
     32 
     33 	os.execute(string.format("m4 %s templates/writ.m4 > %s", m4flags(defs), fns.tmp))
     34 
     35 
     36 	if args.p then
     37 		os.execute(string.format("cat %s", fns.tmp))
     38 		os.remove(fns.tmp)
     39 		io.write(string.format("Deregister player %s.\n", args.name))
     40 		pprint.pprint(h)
     41 		io.write("active := nil\n")
     42 		io.write("latest := nil\n")
     43 		io.write(string.format("deregistration := %s\n", os.date("%Y-%m-%d")))
     44 		io.write("reason := w\n")
     45 	else
     46 		os.execute(string.format("neomutt -H %s -E", fns.tmp))
     47 		local archive_name = os.date("archive/%F-writ-") .. args.who .. ".txt"
     48 		if yn(string.format("Archive report to '%s'? [Yn] ", archive_name)) then
     49 			os.rename(fns.tmp, archive_name)
     50 			table.insert(log, {what = "writ", who = args.who, when = args.when, where = args.m})
     51 			h.active = nil
     52 			h.deregistration = os.date("%Y-%m-%d")
     53 			h.reason = "w"
     54 			h.latest = nil
     55 		else
     56 			os.remove(fns.tmp)
     57 		end
     58 	end
     59 end
     60 
     61 return cantus