rcutil.py
68 lines
| 2.1 KiB
| text/x-python
|
PythonLexer
/ mercurial / rcutil.py
Jun Wu
|
r31679 | # rcutil.py - utilities about config paths, special config sections etc. | ||
# | ||||
# Copyright Mercurial Contributors | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
from __future__ import absolute_import | ||||
import os | ||||
from . import ( | ||||
encoding, | ||||
osutil, | ||||
pycompat, | ||||
util, | ||||
) | ||||
if pycompat.osname == 'nt': | ||||
from . import scmwindows as scmplatform | ||||
else: | ||||
from . import scmposix as scmplatform | ||||
systemrcpath = scmplatform.systemrcpath | ||||
userrcpath = scmplatform.userrcpath | ||||
Jun Wu
|
r31681 | def _expandrcpath(path): | ||
'''path could be a file or a directory. return a list of file paths''' | ||||
p = util.expandpath(path) | ||||
if os.path.isdir(p): | ||||
join = os.path.join | ||||
return [join(p, f) for f, k in osutil.listdir(p) if f.endswith('.rc')] | ||||
return [p] | ||||
Jun Wu
|
r31680 | def defaultrcpath(): | ||
'''return rc paths in default.d''' | ||||
Jun Wu
|
r31679 | path = [] | ||
defaultpath = os.path.join(util.datapath, 'default.d') | ||||
if os.path.isdir(defaultpath): | ||||
Jun Wu
|
r31681 | path = _expandrcpath(defaultpath) | ||
Jun Wu
|
r31679 | return path | ||
Jun Wu
|
r31682 | _rccomponents = None | ||
Jun Wu
|
r31679 | |||
Jun Wu
|
r31682 | def rccomponents(): | ||
Jun Wu
|
r31683 | '''return an ordered [(type, obj)] about where to load configs. | ||
respect $HGRCPATH. if $HGRCPATH is empty, only .hg/hgrc of current repo is | ||||
used. if $HGRCPATH is not set, the platform default will be used. | ||||
if a directory is provided, *.rc files under it will be used. | ||||
type could be either 'path' or 'items', if type is 'path', obj is a string, | ||||
and is the config file path. if type is 'items', obj is a list of (section, | ||||
name, value, source) that should fill the config directly. | ||||
''' | ||||
Jun Wu
|
r31682 | global _rccomponents | ||
if _rccomponents is None: | ||||
Jun Wu
|
r31679 | if 'HGRCPATH' in encoding.environ: | ||
Jun Wu
|
r31682 | _rccomponents = [] | ||
Jun Wu
|
r31679 | for p in encoding.environ['HGRCPATH'].split(pycompat.ospathsep): | ||
if not p: | ||||
continue | ||||
Jun Wu
|
r31683 | _rccomponents.extend(('path', p) for p in _expandrcpath(p)) | ||
Jun Wu
|
r31679 | else: | ||
Jun Wu
|
r31680 | paths = defaultrcpath() + systemrcpath() + userrcpath() | ||
Jun Wu
|
r31683 | _rccomponents = [('path', os.path.normpath(p)) for p in paths] | ||
Jun Wu
|
r31682 | return _rccomponents | ||