hg site extension
 
(Arne Babenhauserheide)
2011-10-07: factored out write overview into writeoverview()

factored out write overview into writeoverview()

diff --git a/static.py b/static.py
--- a/static.py
+++ b/static.py
@@ -14,7 +14,7 @@ without the interactivity).
 __plan__ = """
 
 * Create the static-dir in the repo:
-  - Overview: Readme + commits + template
+  - Overview: Readme + commits + template ✔
   - Changes: Commit-Log + each commit as changeset/<hex>
   - source: a filetree, shown as sourcecode: src/<path> and raw/<path>
   - if b is used: a bugtracker: issue/<id>/<name>
@@ -65,6 +65,36 @@ def parsereadme(filepath):
         return "<pre>" + r.read() + "</pre>"
 
 
+def writeoverview(ui, repo, target, name):
+    """Create the overview page"""
+    overview = open(join(target, "index.html"), "w")
+    overview.write(templates["head"].replace("REPO_NAME", name))
+    # add a short identifier from the first line of the readme, if it
+    # exists # TODO: Parse different types of readme files
+    readme = name
+    for f in os.listdir(repo.root):
+        if f.lower().startswith("readme"):
+            readme = parsereadme(f)
+            overview.write( "\n".join(readme.splitlines()[:3]))
+            break
+    # now add the 5 most recent log entries
+    # divert all following ui output to a string, so we can just use standard functions
+    overview.write("<h2>Changes</h2>")
+    ui.pushbuffer()
+    t = cmdutil.changeset_templater(ui, repo, patch=False, diffopts=None, mapfile=None, buffered=False)
+    t.use_template("""<div style='float: right; padding-left: 0.5em'><em>({author|person})</em></div><strong> {date|shortdate}: <a href='commits/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span><p>{desc|escape}</p>""")
+    for c in range(1, min(len(repo.changelog), 5)):
+        ctx = repo.changectx(str(-c))
+        t.show(ctx)
+    overview.write(ui.popbuffer())
+
+    # add the full readme
+    overview.write("<h2>Readme</h2>")
+    overview.write(readme)
+
+    # finish the overview
+    overview.write(templates["foot"])
+
 def parsesite(ui, repo, target, **opts):
     """Create the static folder."""
     idfile = join(target, _staticidentifier)
@@ -98,33 +128,7 @@ def parsesite(ui, repo, target, **opts):
             f.write(templates["printstyle"])
 
     # then the overview
-    overview = open(join(target, "index.html"), "w")
-    overview.write(templates["head"].replace("REPO_NAME", name))
-    # add a short identifier from the first line of the readme, if it
-    # exists # TODO: Parse different types of readme files
-    readme = name
-    for f in os.listdir(repo.root):
-        if f.lower().startswith("readme"):
-            readme = parsereadme(f)
-            overview.write( "\n".join(readme.splitlines()[:3]))
-            break
-    # now add the 5 most recent log entries
-    # divert all following ui output to a string, so we can just use standard functions
-    overview.write("<h2>Changes</h2>")
-    ui.pushbuffer()
-    t = cmdutil.changeset_templater(ui, repo, False, None, None, False)
-    t.use_template("""<div style='float: right; padding-left: 0.5em'><em>({author|person})</em></div><strong> {date|shortdate}: <a href='commits/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span><p>{desc|escape}</p>""")
-    for c in range(1, max(len(repo.changelog), 5)):
-        ctx = repo.changectx(str(-c))
-        t.show(ctx)
-    overview.write(ui.popbuffer())
-
-    # add the full readme
-    overview.write("<h2>Readme</h2>")
-    overview.write(readme)
-
-    # finish the overview
-    overview.write(templates["foot"])
+    writeoverview(ui, repo, target, name)
 
 def addrepo(ui, repo, target):
     """Add the repo to the target and make sure it is up to date."""
@@ -133,7 +137,9 @@ def addrepo(ui, repo, target):
     except mercurial.error.RepoError, e:
         # already exists
         pass
+    ui.pushbuffer()
     commands.push(ui, repo, dest=target)
+    ui.popbuffer()
 
 
 def static(ui, repo, target=None, **opts):