# Created by Noah Kantrowitz on 2007-06-05. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. import os.path import re import urllib import urllib2 from trac.core import * from trac.web.api import IRequestHandler from trac.web.chrome import INavigationContributor, ITemplateProvider, add_stylesheet from trac.perm import IPermissionRequestor from trac.mimeview.api import MIME_MAP as BASE_MIME_MAP from trac.prefs.api import IPreferencePanelProvider from trac.config import Option, BoolOption from trac.util.text import to_unicode from trac.util.translation import _ from genshi.builder import tag from genshi.core import Markup # Make a copy to start us off MIME_MAP = dict(BASE_MIME_MAP.iteritems()) MIME_MAP.update({ 'png': 'image/png', }) class GitwebModule(Component): """A plugin to embed gitweb into Trac.""" implements(IRequestHandler, INavigationContributor, IPermissionRequestor, ITemplateProvider, IPreferencePanelProvider) gitweb_url = Option('gitweb', 'url', doc='URL to gitweb') send_mime = BoolOption('gitweb', 'send_mime', default=False, doc='Try to send back the correct MIME type for blob_plain pages.') patterns = [ # (regex, replacement) (r'^.*?