hg site extension
 
(Arne Babenhauserheide)
2011-10-20: prepared an indexregexp for rewriting all filenames if they are in

prepared an indexregexp for rewriting all filenames if they are in the way of index.html for manifests.

diff --git a/static.py b/static.py
--- a/static.py
+++ b/static.py
@@ -16,10 +16,16 @@ without the interactivity).
 * Create the static-dir in the repo:
   - Overview: Readme + commits + template ✔
   - Changes: Commit-Log + each commit as commit/<hex> ✔
-  - source: a filetree, shown as sourcecode: src/<path> and raw/<path>
+  - source: a filetree, shown as sourcecode: src/<hex>/<path> and raw/<hex>/<path>
+    with linenumbers as HTML (src) and as plain files (raw)
+    file-links in revision infos: link to the latest change in the file.
+    → manifest ⇒ filelog ⇒ revision before the current.
+    src/<hex>/index.html: manifest with file-links.
+  - Upload it to ftp
   - if b is used: a bugtracker: issue/<id>/<name>
   - fork-/clone-info for each entry in [paths] with its incoming data (if it has some):
-    clone/<pathname>/ → commit log + possibly an associated issue in b.
+    clone/<pathname>/ → incoming log (commits) + possibly an associated issue in b.
+  - More complex Readme parsing.
 
 * Usage:
   - hg static [--name] [-r] [folder] → parse the static folder for the current revision.
@@ -35,6 +41,7 @@ without the interactivity).
 import os
 from os.path import join, isdir, isfile, basename
 import shutil
+import re
 import mercurial
 from mercurial import cmdutil
 from mercurial import commands
@@ -58,6 +65,8 @@ templates = {
     "printstyle": """ """
 }
 
+_indexregexp = re.compile("^\\.*index.html$")
+
 
 def parsereadme(filepath):
     """Parse the readme file"""
@@ -165,6 +174,20 @@ def writecommits(ui, repo, target, name,
             cf.write(templates["foot"].replace("{reponame}", name))
 
 
+def escapename(filename):
+    """escape index.html as .index.html and .ind… as ..ind… and so fort."""
+    if _indexregexp.match(filename) is not None:
+        return "." + filename
+
+
+def writesourcetree(ui, repo, target, name):
+    """Write manifests for all commits and websites for all files.
+
+    * For each file, write sites for all revisions where the file was changed: under src/<hex>/path as html site (with linenumbers and maybe colored source), under raw/<hex>/<path> as plain files. If there is an index.html file, write it as .index.html. If there also is .index.html, turn it to ..index.html, …
+    * For each commit write an index with links to the included files at their latest revisions before/at the commit.
+    """
+    pass
+
 def parsesite(ui, repo, target, **opts):
     """Create the static folder."""
     idfile = join(target, _staticidentifier)