]> projects.mako.cc - iron-blogger/blobdiff - weekly-update.py
fix mads feed
[iron-blogger] / weekly-update.py
index dd217ce8b32114dc29e67373ee8543d3b78da91c..06d85182d84c5cbf127967e0f76837fa970baf62 100755 (executable)
@@ -4,38 +4,86 @@ import os
 import sys
 import xmlrpclib
 import subprocess
 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
 
 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")
 
 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", "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"])

Benjamin Mako Hill || Want to submit a patch?