Commit bb4b8b6b authored by Rusty Russell's avatar Rusty Russell

web: handle symlinks in bzrbrowse.cgi, fix images.

parent b7cb6af1
...@@ -10,7 +10,7 @@ WEB_SUBDIRS=$(WEBDIR)/tarballs $(WEBDIR)/junkcode $(WEBDIR)/tarballs/with-deps $ ...@@ -10,7 +10,7 @@ WEB_SUBDIRS=$(WEBDIR)/tarballs $(WEBDIR)/junkcode $(WEBDIR)/tarballs/with-deps $
JUNKDIRS=$(wildcard junkcode/*) JUNKDIRS=$(wildcard junkcode/*)
JUNKPAGES=$(JUNKDIRS:%=$(WEBDIR)/%.html) JUNKPAGES=$(JUNKDIRS:%=$(WEBDIR)/%.html)
JUNKBALLS=$(JUNKDIRS:%=$(WEBDIR)/%.tar.bz2) JUNKBALLS=$(JUNKDIRS:%=$(WEBDIR)/%.tar.bz2)
BZRBROWSE=$(WEBDIR)/bzrbrowse.cgi $(WEBDIR)/file.png $(WEBDIR)/folder.png BZRBROWSE=$(WEBDIR)/bzrbrowse.cgi $(WEBDIR)/file.png $(WEBDIR)/folder.png $(WEBDIR)/symlink.png
upload: fastcheck webpages upload: fastcheck webpages
bzr push bzr push
......
...@@ -21,16 +21,16 @@ ...@@ -21,16 +21,16 @@
config = { config = {
'root': '/home/ccan/ccan', 'root': '/home/ccan/ccan',
'base_url': '/browse', 'base_url': '/browse',
'images_url': '/browse', 'images_url': '',
'branch_url': 'http://ccan.ozlabs.org/repo', 'branch_url': 'http://ccan.ozlabs.org/repo',
} }
import os, sys import os, sys, string
from bzrlib.branch import Branch from bzrlib.branch import Branch
from bzrlib.errors import NotBranchError from bzrlib.errors import NotBranchError
from bzrlib import urlutils, osutils from bzrlib import urlutils, osutils
__version__ = '0.0.1' __version__ = '0.0.1-rusty'
class HTTPError(Exception): class HTTPError(Exception):
...@@ -55,6 +55,7 @@ class BzrBrowse(object): ...@@ -55,6 +55,7 @@ class BzrBrowse(object):
icons = { icons = {
'file': 'file.png', 'file': 'file.png',
'directory': 'folder.png', 'directory': 'folder.png',
'symlink': 'symlink.png',
} }
page_tmpl = '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> page_tmpl = '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
...@@ -147,12 +148,24 @@ code { background-color: #000; color: #FFF; font-size: 90%%;} ...@@ -147,12 +148,24 @@ code { background-color: #000; color: #FFF; font-size: 90%%;}
linenumbers + '</pre></td><td class="text"><pre>' + escape_html(text) + linenumbers + '</pre></td><td class="text"><pre>' + escape_html(text) +
'</pre></td></tr></table>') '</pre></td></tr></table>')
# Symlinks in ccan contain .., and bzr refuses to serve that. Simplify.
def squish(self, linkname):
result = []
for elem in string.split(linkname, os.sep):
if elem == '..':
result = result[:-1]
else:
result.append(elem)
return string.join(result, os.sep)
def list_branch_directory(self, branch, path, relpath): def list_branch_directory(self, branch, path, relpath):
tree = branch.basis_tree() tree = branch.basis_tree()
file_id = tree.path2id(relpath) file_id = tree.path2id(relpath)
ie = tree.inventory[file_id] ie = tree.inventory[file_id]
if ie.kind == 'file': if ie.kind == 'file':
return self.view_branch_file(tree, ie) return self.view_branch_file(tree, ie)
if ie.kind == 'symlink':
return self.list_branch_directory(branch, path, self.squish(osutils.dirname(relpath) + os.sep + ie.symlink_target))
entries = [] entries = []
if path: if path:
entries.append({ entries.append({
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment