[PATCH 1 of 2] hgweb: move code to read paths configuration into a separate method

Matt Mackall mpm at selenic.com
Thu Nov 29 14:37:32 CST 2012


On Wed, 2012-11-28 at 17:58 +0100, Markus Zapke-Gründemann wrote:
> # HG changeset patch
> # User Markus Zapke-Gründemann <markus at keimlink.de>
> # Date 1354120937 -3600
> # Branch stable
> # Node ID 24b51d1e0d0d8c17b71d3557f570d2c4fa0b9b9d
> # Parent  54cedee86e5126188b0dcfbd7015bcdca7f6c2e2
> hgweb: move code to read paths configuration into a separate method

This one wants to be two patches:

- add self.ui
- pull out getpaths function

> diff --git a/mercurial/hgweb/hgwebdir_mod.py b/mercurial/hgweb/hgwebdir_mod.py
> --- a/mercurial/hgweb/hgwebdir_mod.py
> +++ b/mercurial/hgweb/hgwebdir_mod.py
> @@ -83,38 +83,40 @@ class hgwebdir(object):
>  
>      def __init__(self, conf, baseui=None):
>          self.conf = conf
> -        self.baseui = baseui
> +        if baseui:
> +            self.ui = baseui.copy()
> +        else:
> +            self.ui = ui.ui()
> +            self.ui.setconfig('ui', 'report_untrusted', 'off')
> +            self.ui.setconfig('ui', 'nontty', 'true')
>          self.lastrefresh = 0
>          self.motd = None
>          self.refresh()
>  
> +    def getpaths(self, clean=False):
> +        if not isinstance(self.conf, (dict, list, tuple)):
> +            map = {'paths': 'hgweb-paths'}
> +            if not os.path.exists(self.conf):
> +                raise util.Abort(_('config file %s not found!') % self.conf)
> +            self.ui.readconfig(self.conf, remap=map, trust=True)
> +            paths = []
> +            for name, ignored in self.ui.configitems('hgweb-paths'):
> +                for path in self.ui.configlist('hgweb-paths', name):
> +                    paths.append((name, path))
> +        elif isinstance(self.conf, (list, tuple)):
> +            paths = self.conf
> +        elif isinstance(self.conf, dict):
> +            paths = self.conf.items()
> +        if clean:
> +            paths = dict(cleannames(paths))
> +        return paths
> +
>      def refresh(self):
>          if self.lastrefresh + self.refreshinterval > time.time():
>              return
>  
> -        if self.baseui:
> -            u = self.baseui.copy()
> -        else:
> -            u = ui.ui()
> -            u.setconfig('ui', 'report_untrusted', 'off')
> -            u.setconfig('ui', 'nontty', 'true')
> -
> -        if not isinstance(self.conf, (dict, list, tuple)):
> -            map = {'paths': 'hgweb-paths'}
> -            if not os.path.exists(self.conf):
> -                raise util.Abort(_('config file %s not found!') % self.conf)
> -            u.readconfig(self.conf, remap=map, trust=True)
> -            paths = []
> -            for name, ignored in u.configitems('hgweb-paths'):
> -                for path in u.configlist('hgweb-paths', name):
> -                    paths.append((name, path))
> -        elif isinstance(self.conf, (list, tuple)):
> -            paths = self.conf
> -        elif isinstance(self.conf, dict):
> -            paths = self.conf.items()
> -
> -        repos = findrepos(paths)
> -        for prefix, root in u.configitems('collections'):
> +        repos = findrepos(self.getpaths())
> +        for prefix, root in self.ui.configitems('collections'):
>              prefix = util.pconvert(prefix)
>              for path in scmutil.walkrepos(root, followsym=True):
>                  repo = os.path.normpath(path)
> @@ -124,7 +126,6 @@ class hgwebdir(object):
>                  repos.append((name.lstrip('/'), repo))
>  
>          self.repos = repos
> -        self.ui = u
>          encoding.encoding = self.ui.config('web', 'encoding',
>                                             encoding.encoding)
>          self.style = self.ui.config('web', 'style', 'paper')
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list