Add the repo to the target and make sure it is up to date.
diff --git a/static.py b/static.py
--- a/static.py
+++ b/static.py
@@ -35,6 +35,7 @@ __plan__ = """
import os
from os.path import join, isdir, isfile, basename
import shutil
+import mercurial
import mercurial.cmdutil
from mercurial import commands
@@ -61,7 +62,7 @@ templates = {
def parsereadme(filepath):
"""Parse the readme file"""
with open(filepath) as r:
- return r.read()
+ return "<pre>" + r.read() + "</pre>"
def parsesite(ui, repo, target, **opts):
@@ -79,7 +80,7 @@ def parsesite(ui, repo, target, **opts):
if opts["name"]:
name = opts["name"]
- elif target: name = target
+ elif target != "static": name = target
else: name = basename(repo.root)
# first the stylesheets
@@ -99,26 +100,48 @@ def parsesite(ui, repo, target, **opts):
# then the overview
overview = open(join(target, "index.html"), "w")
overview.write(templates["head"].replace("REPO_NAME", name))
- # add a readme, if it exists # TODO: Parse different types of readme files
+ # 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"):
- overview.write(parsereadme(f))
+ 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
ui.pushbuffer()
commands.log(ui, repo, template="""<div style='float: right; padding-left: 0.5em'><em>({author|person})</em></div>
-<p><strong> {date|shortdate}: <a href='commits/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span></p><p>{desc|escape}</p>""", date="", rev="0:0", user=ui.username())
+<p><strong> {date|shortdate}: <a href='commits/{node}.html'>{desc|strip|fill68|firstline}</a> <span style='font-size: xx-small'>{branches} {tags}</span></p><p>{desc|escape}</p>""", date="", rev="0", user=ui.username())
overview.write(ui.popbuffer())
+
+ # add the full readme
+ overview.write(readme)
+
# finish the overview
overview.write(templates["foot"])
+def addrepo(ui, repo, target):
+ """Add the repo to the target and make sure it is up to date."""
+ try:
+ commands.init(ui, dest=target)
+ except mercurial.error.RepoError, e:
+ # already exists
+ pass
+ commands.push(ui, repo, dest=target)
def static(ui, repo, target=None, **opts):
"""Create a static copy of the repository and/or upload it to an FTP server."""
+ if repo.root == target:
+ ui.warn("static target repo can’t be the current repo")
+ return
# first: just create the site.
+ if target is None: target = "static"
parsesite(ui, repo, target, **opts)
+ # add the hg repo to the static site
+ addrepo(ui, repo, target)