Mercurial > public > src > rhodecode
diff pylons_app/lib/utils.py @ 114:cc5cf1a93902
Implemented simplehg middleware,moved make_ui functions to lib.utils
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 28 Apr 2010 02:08:45 +0200 |
parents | f24b9a2934cf |
children | 2811259dc12d |
line wrap: on
line diff
--- a/pylons_app/lib/utils.py Wed Apr 28 01:56:11 2010 +0200 +++ b/pylons_app/lib/utils.py Wed Apr 28 02:08:45 2010 +0200 @@ -1,3 +1,6 @@ +from mercurial import ui, config +import os +import logging def get_repo_slug(request): path_info = request.environ.get('PATH_INFO') @@ -14,3 +17,59 @@ if http_accept and http_accept.startswith('application/mercurial'): return True return False + +def check_repo_dir(paths): + repos_path = paths[0][1].split('/') + if repos_path[-1] in ['*', '**']: + repos_path = repos_path[:-1] + if repos_path[0] != '/': + repos_path[0] = '/' + if not os.path.isdir(os.path.join(*repos_path)): + raise Exception('Not a valid repository in %s' % paths[0][1]) + +def make_ui(path='hgwebdir.config', checkpaths=True): + """ + A funcion that will read python rc files and make an ui from read options + + @param path: path to mercurial config file + """ + if not os.path.isfile(path): + logging.error('Unable to read config file %s' % path) + return False + #propagated from mercurial documentation + sections = [ + 'alias', + 'auth', + 'decode/encode', + 'defaults', + 'diff', + 'email', + 'extensions', + 'format', + 'merge-patterns', + 'merge-tools', + 'hooks', + 'http_proxy', + 'smtp', + 'patch', + 'paths', + 'profiling', + 'server', + 'trusted', + 'ui', + 'web', + ] + + baseui = ui.ui() + cfg = config.config() + cfg.read(path) + if checkpaths:check_repo_dir(cfg.items('paths')) + + for section in sections: + for k, v in cfg.items(section): + baseui.setconfig(section, k, v) + + return baseui + + +