Install the templates where they can be found by hgweb.py
This ought to use package_data but that doesn't exist in Python 2.3.
So we do a hack of install_data and use glob.
This also adds templatepath() to hgweb.py which finds the templates
relative to hgweb.py's location.
--- a/mercurial/hgweb.py
+++ b/mercurial/hgweb.py
@@ -13,6 +13,11 @@ cgitb.enable()
import os, cgi, time, re, difflib, sys, zlib
from mercurial.hg import *
+def templatepath():
+ for f in "templates/map", "../templates/map":
+ p = os.path.join(os.path.dirname(__file__), f)
+ if os.path.isfile(p): return p
+
def age(t):
def plural(t, c):
if c == 1: return t
@@ -102,7 +107,9 @@ class hgweb:
maxchanges = 20
maxfiles = 10
- def __init__(self, path, name, templatemap):
+ def __init__(self, path, name, templatemap = ""):
+ templatemap = templatemap or templatepath()
+
self.reponame = name
self.repo = repository(ui(), path)
self.t = templater(templatemap)
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,15 @@
# './setup.py install', or
# './setup.py --help' for more options
+import glob
from distutils.core import setup, Extension
+from distutils.command.install_data import install_data
+
+class install_package_data(install_data):
+ def finalize_options(self):
+ self.set_undefined_options('install',
+ ('install_lib', 'install_dir'))
+ install_data.finalize_options(self)
setup(name='mercurial',
version='0.4f',
@@ -16,4 +24,7 @@ setup(name='mercurial',
license='GNU GPL',
packages=['mercurial'],
ext_modules=[Extension('mercurial.mpatch', ['mercurial/mpatch.c'])],
+ data_files=[('mercurial/templates',
+ ['templates/map'] + glob.glob('templates/*.tmpl'))],
+ cmdclass = { 'install_data' : install_package_data },
scripts=['hg'])