~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Patch Queue Manager
  • Date: 2013-10-07 17:04:34 UTC
  • mfrom: (6588.1.1 trunk)
  • Revision ID: pqm@pqm.ubuntu.com-20131007170434-mb0ahksmrzsnhi1i
(vila) Stricter checks on configuration option names (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2014, 2016 Canonical Ltd
 
1
# Copyright (C) 2005-2012 Canonical Ltd
2
2
#   Authors: Robert Collins <robert.collins@canonical.com>
3
3
#            and others
4
4
#
1488
1488
    """Return per-user configuration directory as unicode string
1489
1489
 
1490
1490
    By default this is %APPDATA%/bazaar/2.0 on Windows, ~/.bazaar on Mac OS X
1491
 
    and Linux.  On Mac OS X and Linux, if there is a $XDG_CONFIG_HOME/bazaar directory,
 
1491
    and Linux.  On Linux, if there is a $XDG_CONFIG_HOME/bazaar directory,
1492
1492
    that will be used instead.
1493
1493
 
1494
1494
    TODO: Global option --config-dir to override this.
1503
1503
        #                APPDATA, but hard to move. See bug 348640 for more.
1504
1504
        return osutils.pathjoin(base, 'bazaar', '2.0')
1505
1505
    if base is None:
1506
 
        xdg_dir = osutils.path_from_environ('XDG_CONFIG_HOME')
1507
 
        if xdg_dir is None:
1508
 
            xdg_dir = osutils.pathjoin(osutils._get_home_dir(), ".config")
1509
 
        xdg_dir = osutils.pathjoin(xdg_dir, 'bazaar')
1510
 
        if osutils.isdir(xdg_dir):
1511
 
            trace.mutter(
1512
 
                "Using configuration in XDG directory %s." % xdg_dir)
1513
 
            return xdg_dir
 
1506
        # GZ 2012-02-01: What should OSX use instead of XDG if anything?
 
1507
        if sys.platform != 'darwin':
 
1508
            xdg_dir = osutils.path_from_environ('XDG_CONFIG_HOME')
 
1509
            if xdg_dir is None:
 
1510
                xdg_dir = osutils.pathjoin(osutils._get_home_dir(), ".config")
 
1511
            xdg_dir = osutils.pathjoin(xdg_dir, 'bazaar')
 
1512
            if osutils.isdir(xdg_dir):
 
1513
                trace.mutter(
 
1514
                    "Using configuration in XDG directory %s." % xdg_dir)
 
1515
                return xdg_dir
1514
1516
        base = osutils._get_home_dir()
1515
1517
    return osutils.pathjoin(base, ".bazaar")
1516
1518
 
1555
1557
def xdg_cache_dir():
1556
1558
    # See http://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
1557
1559
    # Possibly this should be different on Windows?
1558
 
    e = os.environ.get('XDG_CACHE_HOME', None)
 
1560
    e = os.environ.get('XDG_CACHE_DIR', None)
1559
1561
    if e:
1560
1562
        return e
1561
1563
    else:
2550
2552
        return "".join(ret)
2551
2553
 
2552
2554
 
2553
 
_option_ref_re = lazy_regex.lazy_compile('({[^\d\W](?:\.\w|-\w|\w)*})')
 
2555
_option_ref_re = lazy_regex.lazy_compile('({[^\d\W](?:\.\w|\w)*})')
2554
2556
"""Describes an expandable option reference.
2555
2557
 
2556
2558
We want to match the most embedded reference first.
3559
3561
        """
3560
3562
        location_parts = self.location.rstrip('/').split('/')
3561
3563
        store = self.store
 
3564
        sections = []
3562
3565
        # Later sections are more specific, they should be returned first
3563
3566
        for _, section in reversed(list(store.get_sections())):
3564
3567
            if section.id is None:
4245
4248
    def _set_config_option(self, name, value, directory, scope):
4246
4249
        conf = self._get_stack(directory, scope, write_access=True)
4247
4250
        conf.set(name, value)
4248
 
        # Explicitly save the changes
4249
 
        conf.store.save_changes()
4250
4251
 
4251
4252
    def _remove_config_option(self, name, directory, scope):
4252
4253
        if name is None:
4255
4256
        conf = self._get_stack(directory, scope, write_access=True)
4256
4257
        try:
4257
4258
            conf.remove(name)
4258
 
            # Explicitly save the changes
4259
 
            conf.store.save_changes()
4260
4259
        except KeyError:
4261
4260
            raise errors.NoSuchConfigOption(name)
4262
4261