X-Git-Url: https://projects.mako.cc/source/iron-blogger/blobdiff_plain/8f3d6d36456ed355a7440ad040ac90e35fbbc4fd..a87dc0bbbfa3d5e480ef21a46b1b93a44de28b3f:/weekly-update.py?ds=inline diff --git a/weekly-update.py b/weekly-update.py index 02cefca..06d8518 100755 --- a/weekly-update.py +++ b/weekly-update.py @@ -4,38 +4,86 @@ import os import sys import xmlrpclib import subprocess +import datetime +import yaml -XMLRPC_ENDPOINT = 'http://iron-blogger.mit.edu/xmlrpc.php' -USER = 'nelhage' +XMLRPC_ENDPOINT = 'http://iron-blogger.mako.cc/xmlrpc.php' +USER = 'mako' BLOG_ID = 1 -try: - subprocess.call(['stty', '-echo']) - passwd = raw_input("Password for %s: " % (USER,)) - print -finally: - subprocess.call(['stty', 'echo']) +dry_run = False -x = xmlrpclib.ServerProxy(XMLRPC_ENDPOINT) +args = sys.argv[1:] +if args[0] == '-n': + dry_run = True + args = args[1:] + +date = args[0] +today = str(datetime.date.today()) + +with open('ledger', 'a') as f: + f.write("\n") + f.write(render.render_template('templates/ledger', date)) + +if not dry_run: + subprocess.check_call(["git", "commit", "ledger", + "-m", "Update for %s" % (date,)]) + +debts = render.get_debts() +punt = [] with open('ledger', 'a') as f: f.write("\n") - f.write(render.render_template('templates/ledger', sys.argv[1])) + for (user, debt) in debts: + if debt < 30: continue + punt.append(user) + f.write("""\ +%(today)s Punt + Pool:Owed:%(user)s $-%(debt)s + User:%(user)s +""" % {'user': user, 'debt': debt, 'today': today}) + + +if not dry_run: + text = render.render_template('templates/week.tmpl', date, punt=punt) + + lines = text.split("\n") + title = lines[0] + body = "\n".join(lines[1:]) + + page = dict(title = title, description = body) + + try: + subprocess.call(['stty', '-echo']) + passwd = raw_input("Password for %s: " % (USER,)) + print + finally: + subprocess.call(['stty', 'echo']) -subprocess.check_call(["git", "commit", "templates/ledger", - "-m", "Update for %s" % (sys.argv[1],)]) + x = xmlrpclib.ServerProxy(XMLRPC_ENDPOINT) + x.metaWeblog.newPost(BLOG_ID, USER, passwd, page, True) -text = render.render_template('templates/week.tmpl', sys.argv[1]) +email = render.render_template('templates/email.txt', date, punt=punt) -lines = text.split("\n") -title = lines[0] -body = "\n".join(lines[1:]) +if dry_run: + print email +else: + p = subprocess.Popen(['mutt', '-H', '/dev/stdin'], + stdin=subprocess.PIPE) + p.communicate(email) -page = dict(title = title, - description = body) +if punt: + with open('bloggers.yml') as b: + bloggers = yaml.safe_load(b) + for p in punt: + if 'end' not in bloggers[p]: + bloggers[p]['end'] = today + with open('bloggers.yml','w') as b: + yaml.safe_dump(bloggers, b) -x.metaWeblog.newPost(BLOG_ID, USER, passwd, page, True) + subprocess.check_call(["git", "commit", "ledger", "bloggers.yml", + "-m", "Punts for %s" % (today,)]) -p = subprocess.Popen(['mutt', '-H', '/dev/stdin'], - stdin=subprocess.PIPE) -p.communicate(render.render_template('templates/email.txt', sys.argv[1])) +# if it's a dry run, lets set the ledger back to the beginning state +if dry_run: + subprocess.check_call(["git", "checkout", "ledger"])