~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Patch Queue Manager
  • Date: 2012-02-22 13:39:51 UTC
  • mfrom: (6470.1.1 less-inventory-use-2)
  • Revision ID: pqm@pqm.ubuntu.com-20120222133951-cqvnnx710wox7905
(jelmer) Use inventories directly in fewer places. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
195
195
        return self[section][name]
196
196
 
197
197
 
 
198
# FIXME: Until we can guarantee that each config file is loaded once and
 
199
# only once for a given bzrlib session, we don't want to re-read the file every
 
200
# time we query for an option so we cache the value (bad ! watch out for tests
 
201
# needing to restore the proper value). -- vila 20110219
 
202
_expand_default_value = None
 
203
def _get_expand_default_value():
 
204
    global _expand_default_value
 
205
    if _expand_default_value is not None:
 
206
        return _expand_default_value
 
207
    conf = GlobalConfig()
 
208
    # Note that we must not use None for the expand value below or we'll run
 
209
    # into infinite recursion. Using False really would be quite silly ;)
 
210
    expand = conf.get_user_option_as_bool('bzr.config.expand', expand=True)
 
211
    if expand is None:
 
212
        # This is an opt-in feature, you *really* need to clearly say you want
 
213
        # to activate it !
 
214
        expand = False
 
215
    _expand_default_value = expand
 
216
    return expand
 
217
 
 
218
 
198
219
class Config(object):
199
220
    """A configuration policy - what username, editor, gpg needs etc."""
200
221
 
205
226
        """Returns a unique ID for the config."""
206
227
        raise NotImplementedError(self.config_id)
207
228
 
 
229
    @deprecated_method(deprecated_in((2, 4, 0)))
 
230
    def get_editor(self):
 
231
        """Get the users pop up editor."""
 
232
        raise NotImplementedError
 
233
 
208
234
    def get_change_editor(self, old_tree, new_tree):
209
235
        from bzrlib import diff
210
236
        cmd = self._get_change_editor()
347
373
        """Template method to provide a user option."""
348
374
        return None
349
375
 
350
 
    def get_user_option(self, option_name, expand=True):
 
376
    def get_user_option(self, option_name, expand=None):
351
377
        """Get a generic option - no special process, no default.
352
378
 
353
379
        :param option_name: The queried option.
356
382
 
357
383
        :returns: The value of the option.
358
384
        """
 
385
        if expand is None:
 
386
            expand = _get_expand_default_value()
359
387
        value = self._get_user_option(option_name)
360
388
        if expand:
361
389
            if isinstance(value, list):
609
637
        for (oname, value, section, conf_id, parser) in self._get_options():
610
638
            if oname.startswith('bzr.mergetool.'):
611
639
                tool_name = oname[len('bzr.mergetool.'):]
612
 
                tools[tool_name] = self.get_user_option(oname, False)
 
640
                tools[tool_name] = self.get_user_option(oname)
613
641
        trace.mutter('loaded merge tools: %r' % tools)
614
642
        return tools
615
643
 
1051
1079
        conf._create_from_string(str_or_unicode, save)
1052
1080
        return conf
1053
1081
 
 
1082
    @deprecated_method(deprecated_in((2, 4, 0)))
 
1083
    def get_editor(self):
 
1084
        return self._get_user_option('editor')
 
1085
 
1054
1086
    @needs_write_lock
1055
1087
    def set_user_option(self, option, value):
1056
1088
        """Save option and its value in the configuration."""
2142
2174
 
2143
2175
        It may be set to a location, or None.
2144
2176
 
2145
 
        This policy affects all branches contained by this control dir, except
2146
 
        for those under repositories.
 
2177
        This policy affects all branches contained by this bzrdir, except for
 
2178
        those under repositories.
2147
2179
        """
2148
2180
        if self._config is None:
2149
2181
            raise errors.BzrError("Cannot set configuration in %s" % self._bzrdir)
2157
2189
 
2158
2190
        This will either be a location, or None.
2159
2191
 
2160
 
        This policy affects all branches contained by this control dir, except
2161
 
        for those under repositories.
 
2192
        This policy affects all branches contained by this bzrdir, except for
 
2193
        those under repositories.
2162
2194
        """
2163
2195
        if self._config is None:
2164
2196
            return None
2403
2435
                value = self.default
2404
2436
        return value
2405
2437
 
2406
 
    def get_help_topic(self):
2407
 
        return self.name
2408
 
 
2409
2438
    def get_help_text(self, additional_see_also=None, plain=True):
2410
2439
        result = self.help
2411
2440
        from bzrlib import help_topics
3626
3655
            for store, section in sections():
3627
3656
                yield store, section
3628
3657
 
3629
 
    def get(self, name, expand=True, convert=True):
 
3658
    def get(self, name, expand=None, convert=True):
3630
3659
        """Return the *first* option value found in the sections.
3631
3660
 
3632
3661
        This is where we guarantee that sections coming from Store are loaded
3645
3674
        :returns: The value of the option.
3646
3675
        """
3647
3676
        # FIXME: No caching of options nor sections yet -- vila 20110503
 
3677
        if expand is None:
 
3678
            expand = _get_expand_default_value()
3648
3679
        value = None
3649
3680
        found_store = None # Where the option value has been found
3650
3681
        # If the option is registered, it may provide additional info about